Hangman

deiwid

Grünschnabel
Hi leute, brauche eure Hilfe.

Muss ein Hangman bsp. machen und komme bei einem bestimmten Punkt nicht weiter.
Die Angabe lautet so:

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

Hab auch schon einiges gemacht. Nur die do Schleife will bei mir net so richtig.
Bitte um Hilfe.


Code:
#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;
}
 
Hi.

Man kann C-Strings (char-Arrays) nicht einfach mit dem != oder == Operator vergleichen. (Also man kann/darf schon, nur wird dabei nur die Adresse der C-Strings verglichen, nicht deren Inhalt)

Man muss die strcmp Funktion benutzen. Oder man verwendet in C++ einfach std::string.

Gruß
 
ich weis nicht ob das Thema noch aktuell ist, aber ich hab hier ne Lösung die funktioniert:
ist mit Dev-C++ geschrieben
Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char suchwort[31];  //zu suchendes Wort
    char losung[31]=""; //bisherige Lösung
    char benutzt[27]="";//Buchstaben die schon benutzt wurden
    char bst;           //eingegebener Buchstabe
    int i;              //index
    int anz;            //Anzahl der Stellen des suchwort
    int z=0;            //anzahl der bisherigen Buchstaben
    int leben=10;       //noch zur Verfügung stehende Leben
    bool merk;          //Merker ob vorhanden
    cout<<"Bitte gib das geheime Wort ein \n(max. 30 Zeichen, alles klein): ";
    cin>>suchwort;
    
    for(i=0;suchwort[i]!=0;i++); //Anzahl der Stellen herausfinden
    anz=i;
    
    for(i=0;i<anz;i++)           //Stellen in losung mit * markieren
      losung[i]='*';

   do
   {  
      system("cls");             //Bildschirm löschen
      merk=false;
      
      cout<<"Leben: "<<leben<<endl;           //Ausgabe der leben
      cout<<"bisherige Loesung: ";            //Ausgabe der bisherigen Lösung
    for(i=0;losung[i]!=0;i++)
      cout<<losung[i]<<" ";
      cout<<"\nbisher verwendete Buchstaben: ";//Ausgabe der bisher verwendeten Buchstaben
    for(i=0;benutzt[i]!=0;i++)
      cout<<benutzt[i]<<" ";
      cout<<"\nBitte gib einen Buchstaben ein: ";//Eingabe des Buchstabens
      cin>>bst;
      benutzt[z]=bst;
      z++;
      
    for(i=0;suchwort[i]!=0;i++)           //Überprüfung ob in suchwort buchstabe vorhanen, solage Enteken Zeichen (0) nicht erreicht
    {
       if(suchwort[i]==bst)
       {
         losung[i]=suchwort[i];           //wenn vorhanden buchstabe in losung einsetzen
         merk=true;                       //merker auf true setzen: Buchstabe vorhanden
       }
    }
    
    if(merk==false)                       //wenn nicht vorhanden, leben eins abziehen
      leben--;
      
   }while(leben!=0&&strcmp(suchwort,losung)!=0); //solage Leben !=0 und loesung != suchwort

   cout<<"\nDie Loesung ist: "<<suchwort<<endl;  //ausgabe Lösung 
   if(strcmp(suchwort,losung)==0)                //wenn gelöst
   {
     cout<<"Herzlichen Glueckwunsch, Sie haben das Wort erraten"<<endl;
   }
   else                                            //sonst
   {
       cout<<"Schade, Sie haben das Wort leider nicht erraten"<<endl;
   }
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Zurück