#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string str){
for(int i = 0; i <= str.length()-1; i++){
if(str[i] != str[str.length()-1-i]){
return false;
}else {
return true;
}
}
}
main(){
string text;
do{
cout << "Enter some Text: " << endl;
cin >> text;
if(isPalindrome(text)){
cout << "The text is a palindrome" << endl;
}
else{
cout << "The text is not a palindrome" << endl;
}
}while(text != "Q");
return 0;
}
Kann mir jemand erklären, was mit meinem Code falsch ist? Wenn ich "otto" als Text eingabe, erzeugt der Code die richtige Antwort. Wenn In Eingabe "ottop" als Text, der Code funktioniert auch, aber wenn ich "ottopo" eingeben, bekomme ich als Ausgabe, dass "ottopo" ein Palindrom ist, was es offensichtlich nicht ist.C++ Palindrom Funktion
Ich scheine etwas zu verpassen oder habe vielleicht etwas übersehen. Ich weiß, dass ich C++ Standard-Bibliotheksfunktionen dafür verwenden könnte, aber ich möchte wirklich wissen, warum es nicht so funktioniert, wie ich es will.
Ich habe Palindrome-Funktionen in Java, Python, Javascript, Ruby ect implementiert ... Ich kann einfach nicht meinen Fehler innerhalb dieses C++ Codes finden! Ich weiß, es ist wirklich simpel, aber es ist so frustrierend!
Das richtige Werkzeug, um solche Probleme zu lösen, ist Ihr Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –
'return' kehrt von einer Funktion zurück. – melpomene
Zum einen kehrt 'return' von Ihrer Funktion zurück. Das bedeutet, dass Ihre Schleife nur die erste Iteration ausführt, die 'return'-Anweisungen bewirken, dass sie während dieser Iteration zurückkehrt und niemals weiter als der erste/letzte Zeichenvergleich. –