Palindromtest Fehlersuche c++

Neue Frage »

Auf diesen Beitrag antworten »
Student12345 Palindromtest Fehlersuche c++

Meine Frage:
Hallo, und zwar hatte ich die Aufgabe, eine Funktion zu entwickeln, welche Überprüft ob ein Wort ein Palindrom ist oder nicht. Nun habe ich eins geschrieben, und bin mir auch ziemlich sicher dass es so funktionieren sollte. Jedoch versuche ich es seit einigen Stunden zu starten doch es funktioniert einfach nicht beziehungsweise ich finde meinen Fehler einfach nicht. Ich hoffe auf Hilfe und vielleicht könnte ja jemand mal drüber gucken.

Meine Ideen:
Hier mein Programm:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
#include <iostream>
#include <string>
using namespace std;

bool palindrom(string wort) {
	bool istPalindrom = true;
	int laenge = wort.size();

	for (int i = 0; i < laenge; i++) {
		if (wort.at(i) != wort.at(i - laenge - 1)) {
			istPalindrom = false;
		}

	}
	if (istPalindrom== true) {
		return(istPalindrom);
	}
	else {
		return(istPalindrom);
	}
}

int main() {
	cout << "Wort eingeben" << endl;
	string wort;
	cin>>wort;
	palindrom(wort);
}
 
Auf diesen Beitrag antworten »
as_string

Mehrere Dinge:
Du hast den Index von hinten her falsch berechnet. Das muss (laenge - i - 1) sein.
Das hier:
code:
1:
2:
3:
4:
5:
6:
	if (istPalindrom== true) {
		return(istPalindrom);
	}
	else {
		return(istPalindrom);
	}

Hier macht das if keinen Sinn: Du hast sowohl im if als auch im else den identischen Ausdruck stehen, dann brauchst Du auch keine Unterscheidung, wenn Du so wie so dasselbe machst. Also nur
code:
1:
return istPalindrom
Bitte auch ohne Klammer. return ist keine Funktion sondern ein Schlüsselwort!

Du machst mit dem Rückgabewert Deiner Funktion gar nichts. Du musst doch irgendetwas ausgeben, sonst sieht ja keiner das Ergebnis.

Gruß
Marco
Auf diesen Beitrag antworten »
Kaimera

Hier mal anschaulich in Java:

code:
1:
2:
3:
4:
5:
6:
7:
8:
	public static String istPalindrom(String string) {
 		for (int i = 0; i < string.length(); i++) {
 			if (string.charAt(i) != string.charAt(string.length()-1-i)) {
 				return "Ist kein Palindrom.";
 			}
 		}
 		return "Ist ein Palindrom.";
 	}


Es wird ein String zurückgegeben. In C# würdest du den mit (glaube ich) Console.WriteLine(IstPalindrom()); ausgeben.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »