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

  • Автор темы uper
  • Дата начала
U

uper

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

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

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

[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]

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