Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Palindromtest Fehlersuche c++ » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Palindromtest Fehlersuche c++
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Student12345
unregistriert
Palindromtest Fehlersuche c++ Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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);
}
13.12.2017 20:58
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
14.12.2017 00:10 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Kaimera
Grünschnabel


Dabei seit: 10.12.2017
Beiträge: 8

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
14.12.2017 02:39 Kaimera ist offline Beiträge von Kaimera suchen Nehmen Sie Kaimera in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Palindromtest Fehlersuche c++