Programm nach bestimmten Ereignis anhalten?



  • Morgen,

    hab hier ein kleines Problem:

    "
    #include <iostream>
    #include <windows.h>

    using namespace std;

    int main()

    {

    int Zufall = rand();
    int i = 1;

    srand(GetTickCount());

    while(Zufall != 1)
    {
    cout << rand()%10 << " " << i << endl;
    i++;

    if(Zufall == 1)
    {
    Sleep(10000);
    }

    }
    }
    "

    Ich möchte eigentlich das Programm anhalten, nachdem die Zahl 1 erschienen ist, bzw. zufällig generiert worden ist.

    Wahrscheinlich ein logischer Fehler, aber ich find ihn einfach nicht -.-

    Danke schonmal für Vorschläge 😉

    Mfg Mulder



  • Hier schon mal für alle in Tags und formatiert:

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    int main()
    {
        int Zufall = rand();
        int i = 1;
    
        srand(GetTickCount());
    
        while(Zufall != 1)
        {
            cout << rand()%10 << " " << i << endl;
            i++;
    
            if(Zufall == 1)
                Sleep(10000);
        }
    }
    


  • Mulder schrieb:

    Morgen

    Guten Morgen!

    Mulder schrieb:

    Wahrscheinlich ein logischer Fehler, aber ich find ihn einfach nicht -.-

    Es hülfe, wenn Zufall im Laufe des Programms verschiedene Werte zugewiesen bekäme...



  • Ich weiß nicht, was dein Code tun soll, aber möglicherweise ist ja das hier das, was du willst:

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    int main()
    {
    
        int i = 1;
    
        srand(GetTickCount());
    
        int Zufall = rand();
        while(Zufall != 1)
        {
            Zufall = rand();
            cout << Zufall%10 << " " << i << endl;
            i++;
    
            if(Zufall == 1)
                Sleep(10000);
        }
    }
    

    (ungetestet)



  • srand(GetTickCount());
    

    Wieso nicht einfach mit time(0) seeden? Dafür braucht man doch nicht die WinAPI.



  • Also geplant war:

    Es werden Zahlen von 1-10 zufällig generiert.
    Sobald die Zahl 1 generiert wird, soll das Programm anhalten (Sleep(10000);).
    Das "i" soll nur angeben, wieviele Durchläufe es gebraucht hat.



  • Anhalten tut das Programm, aber nicht bei der ersten "1" die generiert wird.

    Selbst wenn das Programm nur "0" und "1" ausgibt, brauch es teilweise ca. 5000 durchläufe, bis das Programm anhält.
    Und die "1" kam davor schon tausende male..



  • In etwa so?

    int main()
    {
        int zahl = 0, i = 0;
        while (zahl != 1)
        {
            zahl = rand() % 2;
            cout << zahl << " ";
        }
    
        return 0;
    }
    

    Sobald zahl == 1 ist, wird das Programm beendet.
    Was meinst du denn mit anhalten?
    User muss Taste drücken?



  • Atlas90 schrieb:

    int main()
    {
        int zahl = 0, i = 0;
    
        srand(GetTickCount());
    
        while (zahl != 1)
        {
            zahl = rand() % 100;
            cout << zahl << " " << i << endl;
            i++;
        }
    
        return 0;
    }
    

    Danke!
    Hab deins ein klein wenig umgewandelt, so dass er zählt, wieviele durchgänge er gebraucht hat.
    Dank nochmal 😉


Anmelden zum Antworten