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

Тема в разделе "C/C++/C#", создана пользователем Kilin, 28 окт 2010.

  1. Kilin

    Kilin Гость

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

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Сравнить все символы...

    Вот пример с помощью указателей
    Код (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";
     
Загрузка...

Поделиться этой страницей