Является ли строка полиндромом? Помогите плиз! Зачот горит:)

Тема в разделе "Общие вопросы по С и С++", создана пользователем uper, 17 дек 2008.

  1. uper

    uper Гость

    ЗАдание следующее:

    Написать программу, которая проверяет, является ли строка, введённая с клавиатуры палиндромом.
    Строка может содержать буквы разных регистров, пробелы и другие символы.
    При проверке должны учитываться только символы, являющиеся буквами. При этом не важно, к какому регистру принадлежит буква.

    Решение(скопил у одногруппницы):

    [codebox]#include<iostream>
    #include<string>
    using namespace std;
    bool IsBukva(char symbol)
    {
    switch(symbol)
    {
    case'a':return 1;break;
    case'b':return 1;break;
    case'c':return 1;break;
    case'd':return 1;break;
    case'e':return 1;break;
    case'f':return 1;break;
    case'g':return 1;break;
    case'h':return 1;break;
    case'i':return 1;break;
    case'j':return 1;break;
    case'k':return 1;break;
    case'l':return 1;break;
    case'm':return 1;break;
    case'n':return 1;break;
    case'o':return 1;break;
    case'p':return 1;break;
    case'q':return 1;break;
    case'r':return 1;break;
    case's':return 1;break;
    case't':return 1;break;
    case'u':return 1;break;
    case'v':return 1;break;
    case'w':return 1;break;
    case'x':return 1;break;
    case'y':return 1;break;
    case'z':return 1;break;
    case'A':return 1;break;
    case'B':return 1;break;
    case'C':return 1;break;
    case'D':return 1;break;
    case'E':return 1;break;
    case'F':return 1;break;
    case'G':return 1;break;
    case'H':return 1;break;
    case'I':return 1;break;
    case'J':return 1;break;
    case'K':return 1;break;
    case'L':return 1;break;
    case'M':return 1;break;
    case'N':return 1;break;
    case'O':return 1;break;
    case'P':return 1;break;
    case'Q':return 1;break;
    case'R':return 1;break;
    case'S':return 1;break;
    case'T':return 1;break;
    case'U':return 1;break;
    case'V':return 1;break;
    case'W':return 1;break;
    case'X':return 1;break;
    case'Y':return 1;break;
    case'Z':return 1;break;
    default:return 0;
    }
    }
    char LowReg(char symbol)
    {
    switch(symbol)
    {
    case'A':return'a';break;
    case'B':return'b';break;
    case'C':return'c';break;
    case'D':return'd';break;
    case'E':return'e';break;
    case'F':return'f';break;
    case'G':return'g';break;
    case'H':return'h';break;
    case'I':return'i';break;
    case'J':return'j';break;
    case'K':return'k';break;
    case'L':return'l';break;
    case'M':return'm';break;
    case'N':return'n';break;
    case'O':return'o';break;
    case'P':return'p';break;
    case'Q':return'q';break;
    case'R':return'r';break;
    case'S':return's';break;
    case'T':return't';break;
    case'U':return'u';break;
    case'V':return'v';break;
    case'W':return'w';break;
    case'X':return'x';break;
    case'Y':return'y';break;
    case'Z':return'z';break;
    default:return symbol;
    }
    }
    string CleanString(string input)
    {
    string output;
    string temp;
    int i;
    for (i=0;i<=input.length()-1;i++)
    {
    if (IsBukva(LowReg(input.at(i))))
    {
    temp = LowReg(input.at(i));
    output.append(temp,0,1);
    }
    }
    return output;
    }
    bool palindrom(string output)
    {
    int i;
    for(i=0;i<=output.length()-1;i++)
    {
    if(output.at(i)!=output.at(output.length()-i-1))
    return 0;
    }
    return 1;
    }
    void main()
    {

    string stroka;
    cout<<"Vvedi stro4ku: ";
    cin>>stroka;
    cout<<palindrom(CleanString(stroka))<<'\n';


    }[/codebox]

    Объясните плиз что там происходит в программе, а то мне надо преподу будет рассказать. Ребят, очень прошу, программирование не профильный предмет, но сдавать все равно его как-то надо...
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Эту задачу уже решали миллион раз. Воспользуйтесь поиском...
     
Загрузка...

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