Odpowiedź :
Odpowiedź:
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string word, word2;
std::cin >> word;
std::cout << word << std::endl;
word2 = word;
std::reverse(word2.begin(), word2.end());
std::cout << word2 << std::endl;
if (word == word2) {
std::cout << word << " to palindrom\n";
} else {
std::cout << word << " to nie jest palindrom\n";
}
return 0;
}
Wyjaśnienie:
Odpowiedź
Postanowiłam napisać tak by działało normalnie, czyli aby na przykład można było napisać żółć albo Україна. Napisałam wersję uproszczoną w której można pisać podstawowymi literami z alfabetów łacińskiego, greckiego, arabskiego i cyrylicy, ale nie można napisać na przykład €. Akurat ten znak zajmuje trzy bajty i musiałoby być jeszcze jedno if. Natomiast żeby program działał dla wszystkich znaków zdefiniowanych w Unicode musiałabym dać trzecie if, aby uwzględnić znaki zapisywane na czterech bajtach.
Kod źródłowy jest w pierwszym załączniku. W drugim podałam jak wyglądają przykładowe wyniki uruchomienia.
Przykładowe wyniki uzyskałam na platformie replit. Takie same są przy użyciu OnlineGDB oraz g++ (GCC).
Przetestowałam używając Code::Blocks, Dev-C++, OnlineGDB, Visual Studio oraz g++ pod Linuxem.
Wyjaśnienie
Oczywiście jeżeli Twoja platforma (program, środowisko) nie obsługuje wprowadzania polskich znaków z konsoli, to polskich znaków w wynikach nie będziesz widział. Na przykład używając Code::Blocks, Dev-C++ i Visual Studio można tylko wprowadzić literę ó. Z kolei cpp.sh przestanie działać przy próbie wprowadzenia jakiegokolwiek znaku spoza ASCII.