Esempio n. 1
0
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;
}
Esempio n. 2
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,&lt);
	summ_lists(&ls,&lt,&u);
	std::string out = form_input(&u);
    	std::ofstream f_output(output);
    	f_output << out;
    	f_output.close();
	return 0;
}