Brauche Hilfe bei Galgenmännchen



  • Quelltext:

    #include "stdafx.h"
    #include <iostream>
    #include <ctype.h>
    using namespace std;

    void main()
    {
    char EingabeWort[50], Eingabe;
    int Versuche = 0, i = 0;

    printf("--------------Buchstaben-Galgen--------\n");
    printf("Spieler 1\n");
    printf("Bitte ein Wort eingeben, das von Spieler 2 erraten werden soll:\n");
    fflush(stdin);
    gets(EingabeWort);// Eingabe des zu erratenen Wortes
    system("CLS");// löschen des Bildschirms
    Versuche = strlen(EingabeWort);// Einlesen der Wortlänge
    printf("Du hast %d Versuche um das Wort zu erraten\n",Versuche);// Ausgabe der Versuche gerichtet an der Wortlänge

    for(i=0;i<Versuche;i++)// Wiederholung zur Eingabe von den Buchstaben
    {
    printf("Spieler 2\n");
    printf("Bitte einen Buchstaben eingeben:\n");
    cin >>Eingabe;

    if(Eingabe == EingabeWort[i])
    {
    printf("Gut gemacht!!! Der eingegebene Buchstabe ist richtig!!!\n");
    }
    else
    {
    printf("Schlecht!! Der Buchstabe ist nicht richtig!!!!XD\n");
    }
    }

    }

    Hier soll spieler eins ein wort eingeben. Danach soll Spieler zwei so viele Buchstaben raten können wieviel Stellen das zu erratende Wort hat.
    Das Problem ist das die Buchstaben nach der Reihe geprüft werden und nicht komplett.

    Bitte um schnelle Antwort



  • Ich frag mich echt wo so etwas noch in dieser Weiße beigebracht wird. So Leute, die dieses "Wissen" verbreiten gehören geschlagen...



  • da kann ich aba nix dafür...
    so was bekomm ich in der Berufsschule beigebracht..



  • du musst zusaetzlich noch ueber jedes Zeichen loopen

    for(i=0;i<Versuche;i++)// Wiederholung zur Eingabe von den Buchstaben
    	{
    		cout << "Spieler 2\n";
    		cout << "Bitte einen Buchstaben eingeben:\n";
    		cin >> Eingabe;
    
    		int len = strlen(EingabeWort);
    		bool found = false;
    
    		for(int j=0; j<len; ++j)
    		{
    			if(Eingabe == EingabeWort[j])
    			{
    				found = true;
    				break;
    			}
    		}
    
    		if(found)
    			cout << "Gut gemacht!!! Der eingegebene Buchstabe ist richtig!!!\n";
    		else
    			cout << "Schlecht!! Der Buchstabe ist nicht richtig!!!!XD\n";
    	}
    

    Allerdings solltest du dann pruefen, welcher Buchstabe schon von Spieler 2 als richtig ausgewertet wurde.



  • also das ist eher eine mischung aus c und c++ aber evtl. nützlich

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    class galgenmaennchen{
    private:
    	char word[1024];
    	char found[1024];
    	char misses[1024];
    	int length;
    	int guessCounter;
    	int missesCounter;
    public:
    	void setWordToGuess(){
    		cout << "Enter the word: ";
    		cin >> word;
    		cout << "Enter trys    : ";
    		cin >> guessCounter;
    
    		length = strlen(word);
    		resetFound();
    		resetMisses();
    	}
    	void getWordToGuess(){
    		cout << "Word:   " << word;
    	}
    	void showFound(){
    		cout << "Word:   " << found << endl;
    	}
    	void resetFound(){
    		int l = length;
    		found[l] = 0;
    		while(l--){
    			found[l] = '_';
    		}
    	}
    	void resetMisses(){
    		int l = 1024;
    		while(l--){
    			misses[l] = 0;
    		}
    		missesCounter = 0;
    	}
    	int isCharInWord(char c){
    		int ret = 0;
    		int l = length;
    
    		while(l--){
    			if(word[l]==c){
    				found[l] = c;
    				ret = 1;
    			}
    		}
    
    		if(ret==0)
    			addMissedChar(c);
    
    		return ret;
    	}
    	void showMissedChars(){
    		cout << "Misses: " << misses << endl;
    	}
    	void addMissedChar(char c){
    		misses[missesCounter++] = c;
    		misses[missesCounter++] = ',';
    		misses[missesCounter] = 0;
    	}
    	void guess(){
    		char cc;
    		cout << endl << (guessCounter+1) << " trys left" << endl;
    		showFound();
    		showMissedChars();
    		cout << "Guess:  ";
    		cin >> cc;
    		isCharInWord(cc);
    	}
    	int isSolved(){
    		int l = length;
    		while(l--)
    			if(word[l]!=found[l])
    				return 0;
    		return 1;
    	}
    	void startGuessing(){
    		setWordToGuess();
    		while(guessCounter--){
    			 guess();
    			 if(isSolved()){
    				 cout  << endl << "verry good you are a sentinel;)" << endl;
    				 return;
    			 }
    		}
    		cout << endl << "You are a looser..." << endl;
    		cout << "The word was: " << word << endl;
    	}
    };
    
    int main(void){
    	galgenmaennchen gg;
    	gg.startGuessing();
        return 0;
    }
    

    lg lolo



  • thx für die hilfe aba mit einer mischung aus c und c++ komm ich leider nicht sehr weit .....



  • zaraki schrieb:

    thx für die hilfe aba mit einer mischung aus c und c++ komm ich leider nicht sehr weit .....

    Ich würde eher mal behaupten, der von dir gepostete Code ist eine Mischung aus C und C++, und das von noobLolo ist C++.
    Kann mich aber auch irren 😕



  • ich kann dir versichern dass mein code nur c ist da ich nur diese sprache beherrsche.... 😉



  • also mal davon abgesehn, dass ich selber näher an C als an C++ arbeite, so ist z.B. printf() nicht wirklich Standard-C++... (Da verwendet man eher cout.) In Verbindung mit cin (statt scanf() ) ergibt sich dann das totale Gemische. 😃



  • Nein, beherrschst du ganz sicher nicht.

    Das zeigt schon das void main() .


  • Mod

    zaraki schrieb:

    ich kann dir versichern dass mein code nur c++ ist da ich nur diese sprache beherrsche.... 😉

    Da werden dir sehr viele Leute, die beides beherrschen, widersprechen. So auch ich. Dir wurde bloß fälschlicherweise beigebracht, dass das was du machst C++ wäre. Ist es aber nicht. Und es auch kein C. Es ist eine grauenhafte Mischung aus beidem, mit der du nie glücklich werden wirst.

    Zu schade für dich, dass ein Wechsel des Kurses vermutlich nicht in Frage kommt. Falls doch: Sofort den Lehrer wechseln und alles vergessen was der alte dir beigebracht hat!



  • zaraki schrieb:

    ich kann dir versichern dass mein code nur c++ ist da ich nur diese sprache beherrsche.... 😉

    Dein Code ist nur C.

    crt32 schrieb:

    und das von noobLolo ist C++.

    Soso:
    Zeile 2, 98. AFAIK muss laut Standard in der main nichts returnt werden.



  • ich kann dir versichern dass mein code nur c++
    

    Ein printf wird nicht zu c++, nur weil es mittlerweile in eine andere header
    ueberfuehrt wurde. Eine Kiwi wird ja auch nicht zur Banane, wenn man sie gelb anstreicht 😃


  • Mod

    Kóyaánasqatsi schrieb:

    zaraki schrieb:

    ich kann dir versichern dass mein code nur c++ ist da ich nur diese sprache beherrsche.... 😉

    Dein Code ist nur C.

    Er benutzt komischerweise ein paar Zeilen C++. Man muss aber schon genau hingucken, um sie zu finden:

    #include <iostream>
    
    using namespace std;
    
    cin >>Eingabe;
    

    Abgesehen davon ist das restliche C natürlich ziemlich unportabel ( system("CLS") ), fehleranfällig (Bufferoverflow, wenn jemand mehr als 50 Zeichen eingibt) und an einigen Stellen schlichtweg falsch ( void main() ).


Anmelden zum Antworten