Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Palindromtest Fehlersuche c++ (http://www.informatikerboard.de/board/thread.php?threadid=3816)


Geschrieben von Student12345 am 13.12.2017 um 20:58:

  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);
}



Geschrieben von as_string am 14.12.2017 um 00:10:

 

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



Geschrieben von Kaimera am 14.12.2017 um 02:39:

 

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.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH