Potrzebuję pomocy w napisaniu programu w C++ na rozpoznawanie palindromów (wyrazów które są takie same z obu stron na przykład anna), program musi być odporny na spacje (np an na), znaki interpunkcyjne (np a,n.n,a) oraz wielkość liter (np AnNa)
Potrzebuję na dziś dziękuje jeśli ktoś to potrafi :)


Odpowiedź :

Odpowiedź:

#include <iostream>

#include <string>

#include <algorithm>

int main() {

   std::string word;

   std::getline(std::cin, word); //pobieramy wyraz do sprawdzenia, getline aby mogla być w nim spacja

   std::string result; //zmienna do przechowywania zmienionego wyrazu

   for (auto ch: word) { //zapisujemy zmienioną wersję bez przeszkadzaczy

       if (std::isalpha(ch)) {

           result += std::tolower(ch);

       }

   }

   std::string tmp = result; //zapisujemy zmienna do chwilowej zmiennej

   std::reverse(tmp.begin(), tmp.end()); //odwracamy ją i porównujemy z oryginałem

   if (tmp == result) {

       std::cout << "Palindrom";

   } else {

       std::cout << "Nie palindrom";

   }

   return 0;

}

Wyjaśnienie: