int main() { setlocale(LC_ALL, "Russian");// из заголовочного файла <locale.h>, изменяет значение локали текущей программы, первый аргумент LC_ALL - показывает, //что во всей программе изменяем локаль , второй - Russian показывает, что устаналиваем локаль, которая будет читать все символы русского языка //т.е. эта штука нужна для корректного отображения русских символов std::ifstream f; f.open("input.txt"); //тут наши строки для анализа std::ofstream f_output("output.txt"); // создаём объект класса ofstream для записи и связываем его с файлом output.txt char str[255]; //будут храниться строки из файла char str_change[255]; //строки без пробелов и с заменой регистра заглавных букв на строчные while (!f.eof())//пока не конец файла { f.getline(str, sizeof(str)); // Считываем всю строку по ее длине в массив символов int length = strlen(str); //Длина строки bool is_palindrome = true; //флаг - является ли фраза полиндромом int k = 0; //счеетчик длины str_change for (int i = 0; i < length; i++) //идем по строке из файла if (str[i] != ' ') //если встретили пробел { if (str[i] >= -64 && str[i] <= -33) //если это заглавная русская буква (А, Я, а, я - имеют значения -64 -33 -32 -1 соответсвенно) str_change[k] = str[i] + 32; //если заглавная, то str_change записываем строчную else str_change[k] = str[i]; //если строчная, то str_change записываем ее же k++; //увеличиваем длину str_change } str_change[k] = '\0'; //уменьшаем длину строки до длины k (обрезаем лишнее выделенное место) length = k; //прсиваиваем нашей длине строки новую длину (строки без пробелов и со строчными буквами) for (int i = 0; (i < length / 2) && is_palindrome; i++) //идем одновременно с начала и с конца и сравнвиаем первый символ с последним, второй с предпоследним и тд у строки str_change { if (str_change[i] != str_change[length - i - 1]) //если нашли несовпадение is_palindrome = false; //то это не полиндром, присваиваем флагу отрицательное значение, на след. итерации выйдем из цикла } f_output << str << " is "; //вывод исходной строки в файл f_output.txt if (is_palindrome) // смотрим значение нашего флага, если это полиндром f_output << "palindrome \n"; //то выводим, что полиндром в файл f_output.txt else f_output << "not palindrome \n"; //иначе выводим, что это не полиндром в файл f_output.txt //далее возвращаемся наверх к началу цикла, считываем следующую строку, если такая есть } f.close(); //закрываем файл f f_output.close(); //закрываем файл f_output return 0; }
int main() { char l[80] = "ex.txt"; char t[80] = "ex1.txt"; char output[80] = "output.txt"; list ls,lt,u; form_list(l,&ls); form_list(t,<); summ_lists(&ls,<,&u); std::string out = form_input(&u); std::ofstream f_output(output); f_output << out; f_output.close(); return 0; }