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> korrekt

    Enige 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 != loesung
    

    und

    wort == loesung
    

    nimm 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"


Anmelden zum Antworten