#include <locale.h>
#include <windows.h>
#include <ctype>
using std::isupper;
using std::islower;
using std::tolower;
using std::toupper;
#include <conio>
#include <iostream>
using std::cerr;
using std::cout;
using std::endl;
using std::fixed;
using std::ios;
using std::left;
using std::right;
using std::showpoint;
#include <fstream>
using std::ifstream;
using std::ofstream;
#include <iomanip>
using std::setw;
using std::setprecision;
#include <string>
using std::string;
#include <cstdlib>
using std::exit;
#define Size 2000
//----------------------//
int main()
{
//setlocale(LC_CTYPE,"Russian");
cout << "START.....\n";
//массивы для всяких нужд
string mass[ Size ]; //массив для сортировки слов
int mass2[ Size ];//массив для номеров этих слов
//int mass3[ Size ];//массив для номеров слов с большой буквы
//читаем и создаем файлы
ifstream inClientFile( "18.txt", ios::in );
ofstream outClientFile( "18sp.txt", ios::out);
ofstream outClientFile2( "18sort.txt", ios::out);
//если нет файлов, то СТОП
if ( !inClientFile )
{ cerr << "File could not be opened" << endl;
exit( 1 ); }
if (!outClientFile )
{ cerr << "File could not be opened" << endl;
exit( 1 ); }
if (!outClientFile2 )
{ cerr << "File could not be opened" << endl;
exit( 1 ); }//конец ВСЕХ если
//резервируем переменные
int n=1; //номер слова в файле
int m=0; //номер слова в массиве
int mN; //номер слова в отсортированом массиве
char word[ 30 ];//слово из файла
string word2;
string PER; //переменная для слов
cout << "\nREADING WORDS FROM FILE.....";
cout << "\n\nWRITING WORDS IN FILE.....";
//написали в файлы
outClientFile << left << setw( 10 ) << "Number:"
<< "Word:" << endl;
outClientFile2 << left << setw( 10 ) << "Number:"
<< "Word:" << endl;//закончили
//вывод номеров и слов на экран и в новый файл
while ( inClientFile >> word )
{
//удаляем ненужные знаки
int xLen=strlen(word);//динна обрабатываемого слова
if ( word[0]=='\"' || word[0]=='-')
{
word[0]=NULL;
}
for (int i = 0; i < xLen; i++)
{
if (word=='\"' || word==',' || word=='.' ||
word=='!' || word=='?' || word==':')
{
word=NULL;
}
}//удалили все ненужные знаки
//удаляем пустые ненужные слова
if (word[0]==NULL)
{}//удалили
//елси НЕ пустая, пишем в файл
else
{
outClientFile << left << setw( 10 ) << n << word << endl;
mass[m]=word;
mass2[m]=n;
n++;
m++;
}
}//закончили
cout << "\n\nSORTING.....";
//сотрировка какая-то
for (int j = 1; j < m; j++)
{
for (int i = 0; i < m-1; i++)
{
if (mass>mass[i+1])
{
PER = mass[i+1];
mN = mass2[i+1];
mass[i+1] = mass;
mass2[i+1] = mass2;
mass = PER;
mass2 = mN;
}
}
}//конец сортировки
cout << "\n\nWRITING IN FILE SORTED WORDS.....";
//вывод отсортированых слов в файл
for (int i = 0; i < m; i++)
{
outClientFile2 << left << setw( 10 ) << mass2 << mass << endl;
}//закончили
cout << "\n\nTHATS ALL FOLKS!!!";
getch();
return 0;
}
Сортировка русских слов
Код:
Кто знает как решить данную поблему очень прошу помочь!
Если есть возможность, прошу написать прямо для моей программы!
Вот сам текст моей проги:
Код:
Заранее благодарен, Lazarus Long.....
три строчки кода будет
ЗЫ: коменты в коде жгут :)
студент =) по-любому
switch(knopkodav)
{
case 'A':
strcat(str,"A");
break;
case 'a':
strcat(str,"a");
break;
...
...
...
}
Скок языков и в каком порядке сортировать =), ну на скок сил хватит на столько и сделаешь если думать не хочешь ^_^
Цитата:
//сотрировка какая-то
for (int j = 1; j < m; j++)
{
for (int i = 0; i < m-1; i++)
{
if (mass>mass[i+1])
for (int j = 1; j < m; j++)
{
for (int i = 0; i < m-1; i++)
{
if (mass>mass[i+1])
надо сделать так, чтобы обе сравниваемые строки состояли либо только из символов в верхнем регистре, либо только в нижнем. Что-то вроде
Код:
if( ToUpper( mass ) > ToUpper( mass[i + 1] ) ) ...
конкретные функции не помню уже, так что найди их сам и поставь вместо ToLower или ToUpper. Ну или сам напиши...
Цитата: newcss
Не студент а кнопкодав. Если влом думать, то юзай свитч
switch(knopkodav)
{
case 'A':
strcat(str,"A");
break;
case 'a':
strcat(str,"a");
break;
...
...
...
}
Скок языков и в каком порядке сортировать =), ну на скок сил хватит на столько и сделаешь если думать не хочешь ^_^
switch(knopkodav)
{
case 'A':
strcat(str,"A");
break;
case 'a':
strcat(str,"a");
break;
...
...
...
}
Скок языков и в каком порядке сортировать =), ну на скок сил хватит на столько и сделаешь если думать не хочешь ^_^
Подскажите пожалуйста куда мне влепить Ваш switch, чтобы большие русские буквы переводились в маленькие, т.к. функции С++ toupper/tolower не работают с нашими символами...
Заранее благодарен, Lazarus Long.....
А -> заменяшь на а
а - оставляешь такой же
Б
б
ну и так далее... Программу за тебя здесь ни кто писать не будет.
Берешь строку, посимвольно сравниваешь по букавке. Как сделать сортировку? Юзай Хотя бы метод пузырька
Нет, это то када вы бежите за бутылкой а мы вам пишем программу.
Как запрограммить пузырек? Ручками, открываем Шилда и программим.
Цитата: newcss
Пишешь алфавит от А до Я
А -> заменяшь на а
а - оставляешь такой же
Б
б
ну и так далее... Программу за тебя здесь ни кто писать не будет.
Берешь строку, посимвольно сравниваешь по букавке. Как сделать сортировку? Юзай Хотя бы метод пузырька
Нет, это то када вы бежите за бутылкой а мы вам пишем программу.
Как запрограммить пузырек? Ручками, открываем Шилда и программим.
А -> заменяшь на а
а - оставляешь такой же
Б
б
ну и так далее... Программу за тебя здесь ни кто писать не будет.
Берешь строку, посимвольно сравниваешь по букавке. Как сделать сортировку? Юзай Хотя бы метод пузырька
Нет, это то када вы бежите за бутылкой а мы вам пишем программу.
Как запрограммить пузырек? Ручками, открываем Шилда и программим.
Полностью с Вами согласен. Но тогда хотябы расскажите что в вашем предыдущем посте значет:
knopkodav и str.
Заранее благодарен, Lazarus Long.....
char knopkodav=stroca[1..N];
str - результирующая твоя хрень что на что поменять =) и что с чем объединиитть
Код:
string RusToUpper(string sTarget)
{
const OffsetAO = 'а' - 'А';
const OffsetPR = 'я' - 'Я';
for( int i = 0; i < sTarget.length(); i++ )
{
if( 'а' <= sTarget && sTarget <= 'п' ) sTarget -= OffsetAO;
if( 'р' <= sTarget && sTarget <= 'я' ) sTarget -= OffsetPR;
}
return sTarget;
}
{
const OffsetAO = 'а' - 'А';
const OffsetPR = 'я' - 'Я';
for( int i = 0; i < sTarget.length(); i++ )
{
if( 'а' <= sTarget && sTarget <= 'п' ) sTarget -= OffsetAO;
if( 'р' <= sTarget && sTarget <= 'я' ) sTarget -= OffsetPR;
}
return sTarget;
}