ВОПРОС · Q&A

Прога для проверки зеркальности слова

1 ответов 3,8 тыс.
Автор вопроса
Нужно написать программу которая проверяет зеркально ли введенное слова.Если введено зеркальное слова выводит "YES",если нет выводит "NO".Например вводим abba выводит "YES",вводим massa выводит "NO" .Зеркальные слова читаются одинаково и справа и слева.
 
Сравнить все символы...

Вот пример с помощью указателей
C++:
#include <iostream>

using namespace std;

void main (void)
{
char buffer[1024]; //Буферная переменная в нее получим строку
setlocale (LC_ALL,"Russian"); //Локаль... сугубо для отображенияв Win32 консоли кириллицы
cout<<"Введите строку : "; //Диалог ввода строки
gets(buffer); //Получим строку

char *start = buffer; //Указатель на начало строки
char *end = &buffer[strlen(buffer)-1]; //Указатель на конец строки (исключая завершающий символ строки)
// Либо так //char *end = buffer + strlen(buffer)-1;
bool mirror = true; //Идем от противного, предположим что слово (строка) зеркально
for (int i = 0; i< strlen(buffer); i++) //Обойдем строку
{
if (*start != *end) //Если символы не равны то наше предположение не верно
{
mirror = false; //Присвоим false
break; //Выйдим из цикла заранее
}
start++; //Сдвини начало на один байт в строну конца (было abba - стало bba)
end--; //Сдвиним конец на один байт в сторону начала (было a - ba)
}

if (mirror) //Вывод на экран
cout<<"YES";
else cout<<"NO";
}

Вот пример тоже самое, но обращение к строке как к массиву
C++:
	bool mirror = true; //Идем от противного, предположим что слово (строка) зеркально
for (int i = 0; i< strlen(buffer); i++) //Обойдем строку
{
if (buffer[i] != buffer[strlen(buffer)-1-i]) //Если символы не равны то наше предположение не верно
{
mirror = false; //Присвоим false
break; //Выйдим из цикла заранее
}
}

if (mirror) //Вывод на экран
cout<<"YES";
else cout<<"NO";