Zahlenraten



  • Ich glaube, man fängt mit

    int main()
    {
    }
    

    an. Und TE hat bisher nicht eine Zeile Code gepostet, da beweg ich mich nicht.



  • @SeppJ sagte in Zahlenraten:

    Ich hab's: https://www.c-plusplus.net/forum/topic/304235/zahlenratenprogramm/2

    Lustig 🙂

    Aber @calvinho: das solltest du dir noch nicht anschauen.

    Erstmal: es gibt keine if-Schleife. Wenn du eine "if-Schleife" durch eine "while-Schleife" (die gibt es) ersetzt, ist irgendwas komisch. Mit if bekommst du eine Verzweigung. Ein if selbst wiederholt nichts. Die erneute Abfrage passiert in einer Schleife.

    Also kannst du sowas machen:

    ratebereich festlegen = [1, 99]
    suchzahl einlesen
    forever:
       frage, ob gößer/kleiner/gleich als der Mittelwert
       if gleich: jubeln, schleife verlassen
       if größer, dann ratebereich neu festlegen mit (mittelwert, maximum des ratebereiches],
       sonst  ratebereich neu festlegen mit [minimum des ratebereiches, mittelwert),
    


  • Erstmal danke für die schnellen Antworten.

    @SeppJ
    Auf dein Programm bin ich tatsächlich auch schon gestoßen, allerdings darf ich nur das nutzen, was unserem Kenntnisstand entspricht.

    #include <iostream>
    using namespace std;

    int main()
    {
    int untere_Grenze = 1, obere_Grenze = 100, Mittelwert = (obere_Grenze + untere_Grenze) / 2, Wert = 0;
    char j, g, k;

    cout << "Merken Sie sich eine Zahl zwischen 1 (inklusive) und 100 (exklusive)." << endl << endl;
    cout << "Aktueller Ratebereich: " << untere_Grenze << " bis " << obere_Grenze << endl;
    cout << "Ist " << Mittelwert << " ihre Zahl?" << endl;
    cout << "(j) ja: gleich," << endl;
    cout << "(k)nein: meine Zahl ist kleiner," << endl;
    cout << "(g)nein: meine Zahl ist groesser." << endl;
    
    if (Wert == Mittelwert)
    {
    	cin >> j;
    	cout << "Die gesuchte Zahl ist " << Mittelwert << endl;
    }
    	 if (Wert > Mittelwert)
    	{
    		cin >> g;
    		cout << "Aktueller Ratebereich: " << Mittelwert << " bis " << obere_Grenze << endl;
    		cout << "Ist " << Mittelwert * 1.5 << " ihre Zahl?" << endl;
    		cout << "(j) ja: gleich," << endl;
    		cout << "(k)nein: meine Zahl ist kleiner," << endl;
    		cout << "(g)nein: meine Zahl ist groesser." << endl;
    	}
    		else if (Wert < Mittelwert)
    		{
    			cin >> k;
    			cout << "Aktueller Ratebereich: " << untere_Grenze << " bis " << Mittelwert << endl;
    			cout << "Ist " << Mittelwert / 2 << " ihre Zahl?" << endl;
    			cout << "(j) ja: gleich," << endl;
    			cout << "(k)nein: meine Zahl ist kleiner," << endl;
    			cout << "(g)nein: meine Zahl ist groesser." << endl;
    		}
    
     
    system("PAUSE");
    return 0;
    

    }

    Das hätte ich soweit, allerdings wird mir immer die letzte Verzweigung ausgegeben, egal welchen Buchstaben ich eingebe...



  • @calvinho sagte in Zahlenraten:

    wird mir immer die letzte Verzweigung ausgegeben,

    Welchen Wert hat Wertdenn?



  • @manni66
    was würdest du mir empfehlen? immerhin weiß ich jetzt wo der Fehler liegt..


  • Mod

    @calvinho sagte in Zahlenraten:

    @SeppJ
    Auf dein Programm bin ich tatsächlich auch schon gestoßen, allerdings darf ich nur das nutzen, was unserem Kenntnisstand entspricht.

    Du brauchst ja nur die Templates entfernen und dann hast du ein wunderbares rekursives Programm.



  • @calvinho sagte in Zahlenraten:

    was würdest du mir empfehlen?

    Ich weiß nicht was du mit Wert anstellen willst.



  • @manni66
    Ich wollte vergleichen, ob die gesuchte Zahl <, >, = Mittelwert ist.
    Aber so klappt das ja nicht



  • @calvinho sagte in Zahlenraten:

    @manni66
    Ich wollte vergleichen, ob die gesuchte Zahl <, >, = Mittelwert ist.
    Aber so klappt das ja nicht

    Da du die gesuchte Zahl nicht kennst kannst du sie auch nicht testen. Du wirst wohl irgendwie die Antwort des Benutzers auswerten müssen.



  • Kann ich das irgendwie so darstellen, dass:

    wenn die Benutzereingabe j / k / g lautet,
    dass dann Entsprechendes passiert?


  • Mod

    @calvinho sagte in Zahlenraten:

    Kann ich das irgendwie so darstellen, dass:

    wenn die Benutzereingabe j / k / g lautet,
    dass dann Entsprechendes passiert?

    Ja. "Wenn" heißt auf C++ "if".



  • Danke @SeppJ , das ist mir bewusst.
    Würdest du mir verraten, wie die if-Verzweigung aussehen könnte?


  • Mod

    @calvinho sagte in Zahlenraten:

    Danke @SeppJ , das ist mir bewusst.
    Würdest du mir verraten, wie die if-Verzweigung aussehen könnte?

    Du schreibst erst if; dann in runden Klammern, wann etwas passieren soll; dann in geschweiften Klammern, was passieren soll.

    Dein jetziger Ansatz wird niemals funktionieren. Bitte lies dir genau die Ratschläge durch, wie man so ein Programm schreiben könnte. Es wurde schon ziemlich genau alles gesagt, jede weitere Konkretisierung würde heißen, dass es dir jemand komplett hin schreibt.



  • @calvinho sagte in Zahlenraten:

    wenn die Benutzereingabe j / k / g lautet,

    Du musst die Antwort auch einlesen! Und zwar in jedem Fall. Nicht unter irgendeiner Bedingung.


Anmelden zum Antworten