Random Funktion in einer Switch case Anweißung



  • Ich habe versucht ein kleines Schere Stein Papier Spiel zu programmieren.
    Wenn man eine Zahl eingibt 1 2 oder 3 soll er eine beliebige Zahl ausgeben:
    Aber er bringt immer einen Error bei dieser Zeile wenn ich es compilieren lassen will
    srand(static_cast<unsigned>(time(0)));
    Kann man so die Random Fuktion überhaupt in eine switch case Anweißung reinschreiben.

    #include <iostream>
    #include <stdlib.h>
    #include <conio.h>
    #include <cstdlib>
    #include <ctime>
    using namespace std;
    
    int main()
    {
        char Auswahl;
        int max;
        int min;
    
    do
    {
    
        cout<<"\nSchere - Stein - Papier - Das Spiel"<<endl;
        cout<<"\nWaehle: \n(1)Schere\n(2)Stein\n(3)Papier \n(4)Beenden"<<endl;
        cout<<"\nEingabe:";
        cin>>Auswahl;
    
         switch(Auswahl)
        {
    
            case('1'):
            srand(std::time(0));
            cout<<rand()%3+1<<endl;
            break;
    
            case('2'):
            srand(std::time(0));
            cout<<rand()%3+1<<endl;
            break;
    
            case('3'):
            srand(std::time(0));
            cout<<rand()%3+1<<endl;
            break;
    
            case('4'):
            cout<<"Das Spiel wird beendet..."<<endl;
            break;
    
           default:
           cout<<"Keine korrekte Eingabe."<<endl;
           break;
    
        }
        getch();
        system("cls");
    
    }
    
    while(Auswahl!='4');
    
        return 0;
    }
    


  • Da du die Fehlermeldung des Compilers nicht geschrieben hast, gehe ich einmal davon aus, dass ein

    #include <ctime>
    

    fehlt.
    Außerdem ist der Cast nicht notwendig:

    srand(std::time(0));
    

    Btw: Die Initialisierung ist eigentlich nur einmalig nötig.



  • Erstens: Es wäre noch hilfreich, wenn du die Fehlermeldung mit dazuschreibst.
    Zweitens: Entscheide dich bitte, ob du C-Header (stdio.h) oder C++-Header (cstdlib) verwenden willst - Headernamen wie cstdlib. dürften generell falsch sein.
    Drittens: srand() mußt du nicht vor jeder Zufallsziehnung aufrufen, sondern nur einmal am Programmstart.
    Viertens: sfds



  • Hier liegt der Hund begraben:

    #include <cstdlib.>
    

    Siehst du den Punkt?



  • Das gleiche beim iostream.



  • Sry ich bin erst seit gestern angemeldet und weiß noch nicht so viel.
    Vielen Dank für die vielen Antworten.
    Jetzt kommt auch keine Fehlermeldung mehr leider funktioniert aber nicht alles so.
    Ich hab mehrmals versucht die Initialisirung umzuschreiben und umzusetzen aber er gibt immernoch bei jeder Eingabe die 3 aus und keine zufällige Zahl könntet ihr mir noch ein paar Tipps geben.



  • Zeig doch mal, wie dein Code inzwischen aussieht.

    Korrektur: Ist mir beim ersten durchsehen nicht sofort aufgefallen, aber der Ausdruck rand()%1+3 ist nicht besonders sinnvoll - du berechnest den Rest der Zufallszahl bezüglich 1 (ist bei ganzen Zahlen immer 0) und addierst darauf einen festen Wert. Ich vermute mal, du wolltest eigentlich rand()%3+1 schreiben.



  • Ok vielen Dank daran lag es.
    Aufjeden fall funktioniert es jetzt so wie es oben steht.


Anmelden zum Antworten