1

C++ erstes Spiel

Frage von Nintendo200 Nintendo200

Was hab ich Falsch gemacht? Das Programm gibt mir nicht aus wenn ich gewonnen hab. Hab gerade erst angefangen zu Programmieren.

include "stdafx.h"

include

include

using namespace std;

int b; int c=1;

void main() {
srand(time(NULL));

cout<<"Versuchen sie die Zahl zu erraten!"<<endl;
while(c==1)
{   
    cout<<"Geben sie eine Zahl zwischen 0 und 100 ein"<<endl;
    cin>>b;


    int a=rand()%101;

    if (b>a)
    {
        cout<<"Die unbekannte Zahl ist kleiner"<<endl;
    }

    else if (b<a)
    {
        cout<<"Die unbekannte Zahl ist größer"<<endl;
    }
    else
    {
        cout<<"Gewonnen"<<endl;
        c==1;
    }

}

}

Fragen zu gleichen Themen finden

Antworten (5)

  • 1
    Hilfreichste Antwort ausgezeichnet vom Fragesteller
    Antwort von Bluekobalt Bluekobalt

    Ach jetzt habe ich es erst verstanden:

    Du brauchst natürlich eine Schleife, denn das Programm weiß ja nicht was es weiter machen soll.

    Es fragt eine Bedingung ab beispielsweise, die Erste Es kommt zur Ausgabe:

    cout<<"Die unbekannte Zahl ist kleiner"<<endl;
    

    Und dann ist ende.

    Du brauchst eine "While" schleife mit der abruchbedingung a=b

    Kommentar von Nintendo200 Nintendo200

    Nein ich kann immer wieder eine Zahl eingeben

    Kommentar von Bluekobalt BluekobaltBluekobalt

    und jetzt habe ich die Schleife erst gesehen, sorry. Dann würde ich wieder zu meiner ersten Aussage zurückkommen und ein return 0; verlangen.

    Kommentar von Bluekobalt BluekobaltBluekobalt

    Ausserdem würde ich while(a!=b) am Fuß der Funktion machen und gewonnen aus der Schleife nehmen.

    Kommentar von Bluekobalt BluekobaltBluekobalt

    Ich habe das jetzt mal in meiner Lieblingssprache (Python) gemacht

    import random
    
    rate=0
    zoro=random.randrange(0, 100)
    
    
    rate=input("zahl zwischen 1 und 100")
    rate=int(rate)
    
    n=1
    while rate != zoro:
    
    if rate < zoro:
       rate=input("zahl zu klein")
       rate=int(rate)
    elif rate > zoro:
         rate=input("zahl zu gross")
         rate=int(rate)
    n=n+1
    
    print("Gratulation das waren",n, "versuche")
    

    Das funktioniert !

    Kommentar von tobistenzel tobistenzeltobistenzel

    Das rate=0 in Zeile 3 würde ich noch weglassen, aber gutes Beispiel ;)

    Kommentar von Bluekobalt BluekobaltBluekobalt

    stimmt ist überflüssig !

  • 0
    Antwort von Nintendo200 Nintendo200

    Jetzt hab ichs (auch ohne eure Hilfe XD):

    include "stdafx.h"

    include

    include

    using namespace std;

    int a; int b; int c=1; int n=1;

    void main() {
    srand(time(NULL)); a=rand()%101;

        cout<<"Versuchen sie die Zahl zu erraten!"<<endl;
        cout<<"Geben sie eine Zahl zwischen 0 und 100 ein"<<endl;
        cout<<a<<endl;
        cin>>b;
    
    
    
        while(c==1) 
        {   
    
            if (b>a)
            {
                cout<<"Die unbekannte Zahl ist kleiner"<<endl;
                cin>>b;
            }
    
            else if (b<a)
            {
                cout<<"Die unbekannte Zahl ist größer"<<endl;
                cin>>b;
            }
    
            else
            {   
                if (n>1)
                {
                    cout<<"Glueckwunsch, Sie haben die Zahl ";cout<<a;cout<<" in ";cout<<n+1;cout<<" Versuchen erraten!"<<endl;
                    c=0;
                }
    
                else 
                {
                    cout<<"Glueckwunsch sie haben die Zahl ";cout<<a;cout<<" in !einem! Versuch erraten!!"<<endl;
                    c=0;
                }
                cin.get();
            }
            cin.get();
    
    
            if (b!=a)
            {
                n=n+1;
            }
    
    
    
        }   
    

    }

  • 0
    Antwort von lablab66 lablab66

    Trägt jetzt nicht zum Fehler hin, aber ich hätte auf jeden Fall statt "else" "else if(b==a)..." geschrieben.

    Kommentar von Nintendo200 Nintendo200

    Brauch ein else if nicht immer auch ein else zum schluss?

    Kommentar von tobistenzel tobistenzeltobistenzel

    Muss nicht sein.

  • 0
    RatgeberHelden Antwort von tobistenzel tobistenzel

    Du musst schon dazusagen, was da für Fehlermeldungen auftauchen oder was genau "nicht geht". Sonst ist das schlecht zu beantworten. Die Includes sind durch die Textformatierung hier leider auch kaputt.

    Da hast du dir aber auch eine schwere Sprache für den Einstieg ausgesucht, warum denn C++? Ich programmiere schon recht lange und benutze C++ auch nur, wenn es gar nicht anders geht ;)

    Kommentar von Nintendo200 Nintendo200

    Wie ich schon sagte es gibt mir nicht den Befehl cout<<"Gewonnen" nicht aus. Probier doch mal. Ich muss mich heuer entscheiden ob ich Maschinenbau oder Informatik weitermache. Und deshalb probier ich das Programmieren ein wenig.

    Kommentar von Nintendo200 Nintendo200

    Wenn ich 55 eingebe gibt er aus das die Zahl kleiner ist gebe ich aber 54 ein sagt er mir aus das die Zahl größer ist. Er sollte mir aber ausgeben das ich gewonnen habe weil ich die Zufallszahl erreicht habe

    Kommentar von tobistenzel tobistenzeltobistenzel

    Das Spiel ist ja auch ein wenig unfair, da die Zufallszahl jedesmal neu berechnet wird ;)

    Kommentar von tobistenzel tobistenzeltobistenzel

    Wenn ich Leute von Informatik überzeugen will dann zeige ich denen sicher kein C++, das schreckt eher ab...

    Es gibt doch so viele angenehmere Programmiersprachen. Bluekobalt hat schon ein gutes Beispiel dafür gepostet ;)

  • 0
    Antwort von Bluekobalt Bluekobalt

    return 0;

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.