Răspuns :
Răspuns:
#include <iostream>
#include <string>
using namespace std;
bool palindromF(string s)
{
bool palindrom = true;
for(int i = 0;i < ((s.length() / 2) + 1);i++)
{
if(s[i] != s[s.length() - 1 - i])
palindrom = false;
}
return palindrom;
}
int main()
{
cout<<"Introdu textul: ";
//Acesta este ceva pentru a citi o linie! Poate intr-un program normal functioneaza si fara atatea doar facand cin>>s
string readLine = "";
string s = "";
cin >> readLine;
s = readLine;
getline (cin, readLine);
s += readLine;
/////////////////////////////////////////////////////////////////////////////////////////////
if(s.length()>200)
{
cout<<"Valoarea lungii textului tastat este mai mare ca si valoarea 200!";
return 0;
}
cout<< "Textul introdus este: " + s <<endl;
int nrPalindrom = 0;
string* palindrom = new string[50];
string word = "";
int j = 0;
int countAllWord = 0;
for (int i = 0; i < s.length(); i++) {
if(s[i] != ' ')
word+=s[i];
else
{
if(i != 0 && s[i-1] != ' ')
{
if(palindromF(word) == 1)
{
palindrom[j] = word;
j++;
}
word = "";
countAllWord++;
}
}
if(i == s.length() - 1)
if(i != 0 && s[i-1] != ' ')
{
if(palindromF(word) == 1)
palindrom[j] = word;
countAllWord++;
}
}
cout<<"Textul are " + to_string(countAllWord) + " cuvinte."<<endl;
cout<<"Textul are " + to_string(j) + " cuvinte palindrom."<<endl;
if(j == 0)
cout<<"Nu exista numere palindrom.";
for(int i = 0; i < j; i++)
{
cout<<palindrom[i];
if(i<j-1)
cout<<", ";
}
return 0;
}
Explicație:
Avem grija sa tratam fiecare cuvant din text, validam daca corespunde cerintelor ce se dau in ipoteza. Afisam numarul de cuvinte al textului, afisam numarul de cuvinte palindrom si apoi afisam si cuvintele palindrom. Toate literele la comparatie pentru palindrom sa fie de acelasi tip cu acelasi cod ASCII nu poti compara A cu a ca in cuvantul Ana.
Ex:
ana are mere - 1 cuv palindrom,
Ana are mere - 0 cuv palindrom,
AnA are mere - 1 cuv palindrom;