Witam,
Mam napisać program który sprawdza czy wprowadzony łańcuch jest palindromem, przy czym program nie uwzględnia wielkości liter i spacji (tak ma być). Zastanawiam się, czy można to zrobić sprawniej i lepiej. Szczególnie interesuje mnie to co wpisałem jako komentarz w jednej z funkcji i czy dobrze użyłem funkcji bool.
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
string tostring (string str);
bool pallindrome (string str);
int main()
{
string str;
getline (cin, str);
pallindrome (str) == 1? cout<<"TAK": cout<<"NIE";
}
string tostring (string w) // funkcja ktora zamienia wpisany lancuch na jedolitą wersje bez spacji i malych liter
{
string str = w;
for(int i = 0; i<str.size()-1; i++) //rozumiem ze w takiej sytuacji konieczna jest iteracja. nie ma
//funkcji ktora zamieni mi wzsytkie litery w lancuchu string na male bez iteracji (za: SO)
str[i]=tolower(str[i]);
int loc = str.find(' ');
do{
str.erase(loc, 1);
loc = str.find(' ');
}while (loc != string::npos);
return str;
}
bool pallindrome (string lan)
{
string str=(tostring(lan));
int siz= str.size()-1;
for (int i = 0, j = siz; i<siz/2; i++, j--)
{
if(str[i]!=str[j])
return false;
}
return true;
}