Hangman
-
Hi
Ich muss ein Hangman-Programm schreiben, komm aber (weil ich noch Anfänger bin) an meine momentanen Grenzen. Ich bitte euch um ein wenig Hilfe.
Hier die kurze Angabe:Bitte geben Sie ein geheimes Wort ein: <lehen> //Hier sollte der Bildschirminhalt jetzt gelöscht werden
Bitte wählen Sie einen Buchstaben: <e>
-e-e-
1. Versuch: <lesen> falsch
2. Versuch: <leben> falsch
Bitte wählen Sie einen Buchstaben: <l>
le-e-
1. Versuch: <leser> falsch
2. Versuch: <lehen> korrektEnige Teile von meinem Code funktionieren schon ganz gut. Nur mit der do Schleife komm ich nicht weiter.
#include <iostream> using namespace std ; int main() { char wort[80], b, ergebnis[80], loesung[80], loesung1[80]; cout << "Geben sie das Wort ein: " ; cin >> wort; system("clear"); for(int i=0; i < wort[i]; i++) { ergebnis[i] = wort[i]; ergebnis[i] = '-' ; } do { cout << " Wähle einen Buchstaben: " ; cin >> b; for(int i = 0; i < wort[i]; i++) { if(wort[i] == b) ergebnis[i]=wort[i] ; cout << ergebnis[i] ; } cout << " 1.Verusch: " ; cin >> loesung ; for(int i = 0; i < loesung[i]; i++) { if(loesung == wort) cout << "richtig" ; } while(wort != loesung) ; return 0; }
-
Und wie äußert sich das "komme nicht weiter"?
Was auf Anhieb auffällt, ist die etwas eigenwillige Abbruchbedingung der for-Schleifen - und eine miserable Code-Ausrichtung.
-
statt:
wort != loesungund
wort == loesungnimm mal
strcmp(wort,loesung)== TRUE/FALSE
-
deiwid schrieb:
char wort[80], b, ergebnis[80], loesung[80], loesung1[80];warum? was stimmt denn mit std::string nicht?
-
Oooh, da fehlen aber noch einige Grundkenntnisse von C++ (bzw. C).
Es wäre einfacher für dich, wenn du den Datentyp "std::string" benutzen würdest (anstatt die char-Arrays).
Schau dir mal ein paar Tutorials dazu hier im Forum an...
-
naja so weit bin ich noch nicht, mache c++ erst seit 3 wochen
-
konkret habe ich nur mit dem letzten teil probleme...habe nachgelesen. dšrfen nur array verwenden. also kein std::string oder strcmp. hab davon ja noch nichts gehoert
mit dem teil klappts einfach nicht
cout << " 1.Verusch: " ; cin >> loesung ; for(int i = 0; i < loesung[i]; i++) { if(loesung == wort) cout << "richtig" ; } } while(wort == loesung) ; return 0;
-
1.Du kannst "char[]" nicht mit "==" oder "!=" vergleichen, du musst alle Zeichen einzeln vergleichen (Schleife).
2.Alternativ kannst du mit std::String arbeiten, die man dann mit "==" / "!=" vergleichen kann,
3.oder mit "strcmp(x,y)==true" (x=loesung, y=wort..., Typ: "char[]"), womit du dir die Schleife von 1 ersparst...
-
langeweile schrieb:
3.oder mit "strcmp(x,y)==true" (x=loesung, y=wort..., Typ: "char[]"), womit du dir die Schleife von 1 ersparst...

Fast - richtig wäre das "strcmp(x,y)==0"