Zufalls Generierte Zahlen.



  • C und C++ beide vom Anfang an 😃



  • Hab es mehr oder weniger hingekriegt. Aber wenn ich euch jetzt frage wie ich die Punktezahl anzeigen lassen kann, das sind keine Grundlagen 😃 Weis das jemand?

    Ach ja und das hier:

    cout << rand() %3+1 << endl;

    Hat nichts gebracht... die Console hat immer die 1 generiert.

    #include <iostream> 
    #include <cstdlib> 
    
    using namespace std; 
    
    int main() 
    
    { 
    zufall: 
    
    system("cls"); 
    
    int ents; 
    int zufall = rand() %3; 
    
      cout << "Schere, Stein, Papier Spiel" << endl << endl; 
      cout << "1. Schere / 2. Stein / 3. Papier ( 1,2 oder 3)" << endl << endl; 
      cin >> ents; 
    
      srand (time(NULL)); 
      cout << rand() %3 << endl;      // zufall : 0 = Schere / 1 = Stein / 2 = Papier 
                                      // ents : 1 = Schere / 2 = Stein / 3 = Papier 
     if ( ents == 1 && zufall == 0) 
     { 
          cout << "Schere schneidet Schere = Unentschieden!" << endl << endl; 
    
     } 
    
     if ( ents == 1 && zufall == 1) 
     { 
          cout << "Stein schlägt Schere = Verloren!" << endl << endl; 
    
     } 
    
     if ( ents == 1 && zufall == 2) 
     { 
          cout << "Schere schneidet Papier = Gewonnen!" << endl << endl; 
    
     }   
    
     if ( ents == 2 && zufall == 0) 
     { 
          cout << "Stein schlägt Schere = Gewonnen!" << endl << endl; 
    
     } 
    
     if ( ents == 2 && zufall == 1) 
     { 
          cout << "Stein schlägt Stein = Unentschieden!" << endl << endl; 
    
     } 
    
     if ( ents == 2 && zufall == 0) 
     { 
          cout << "Blat umwickelt Stein = Verloren!" << endl << endl; 
    
     } 
    
     if ( ents == 3 && zufall == 0) 
     { 
          cout << "Schere schneidet Papier = Verloren!" << endl << endl; 
    
     } 
    
     if ( ents == 3 && zufall == 1) 
     { 
          cout << "Papier umwickelt Stein = Gewonnen!" << endl << endl; 
    
     } 
    
     if ( ents == 3 && zufall == 0) 
     { 
          cout << "Papier umwickelt Papier = Unentschieden!" << endl << endl; 
    
     }   
    
    system("PAUSE"); 
    
    goto zufall; 
    
    }
    

  • Mod

    Du merkst dir in einer Variable die Punktzahl, veränderst diese gegebenenfalls und gibst sie aus. Doch, das sind Grundlagen, so ungefähr Seite 3 in einem typischen Buch 🙂 .

    Ich wette übrigens, dass nun genau der Zeitpunkt ist, an dem du mit dem goto auf die Schnauze fliegst. Denn mit der Punktzahl, wie einfach das auch aussehen mag, wird auf einmal ein funktionsweiter Zustand wichtig. Da ist es wichtig, den Kontrollfluss genau verfolgen zu können, was wann wo wie verändert wird. Also das, was bei goto so unlesbar ist.



  • Seite 3? Haha 😃 ne ich will es nicht verändern, es soll automatisch passieren. Und ich versteh manchmal die Reaktion einzelner Leute nicht wenn sie sehen wie einer goto benutzt xD ist meiner Meinung nach ein schöner Befehl. Also wenn du was weist freu ich mich 😃 ansonsten schau ich selber wie ich das mit der Punktezahl hinkriegen 🙂


  • Mod

    Chechen65 schrieb:

    Haha 😃 ne ich will es nicht verändern, es soll automatisch passieren.

    So funktioniert Programmierung nicht. Es gibt keine Magie. Du musst ganz genau definieren, was wann wo warum wie passieren soll.

    Und ich versteh manchmal die Reaktion einzelner Leute nicht wenn sie sehen wie einer goto benutzt xD ist meiner Meinung nach ein schöner Befehl.

    Das kannst du als absoluter Anfänger aber nicht einschätzen. Goto gilt als die absolute Todsünde und das zurecht. Benutze es nicht, damit du es dir gar nicht erst angewöhnst.
    Google: goto considered harmful

    Und du hast wahrscheinlich gerade versehentlich eine riesige Glaubensdiskussion ausgelöst, weil gleich wieder jeder seinen einen Fall vorträgt, in dem er goto einmal sinnvoll verwendet hat. 😃



  • SeppJ schrieb:

    Goto gilt als die absolute Todsünde und das zurecht. Benutze es nicht, damit du es dir gar nicht erst angewöhnst.

    Ich weiss nicht, ob es so sinnvoll ist, programmieren durch Verbote zu lehren.
    - Verwende nie goto, nimm for/while
    - Verwende nie Zeiger und new/delete, nimm immer std::vector
    - Verwende nie const char*, nimm std::string
    - Verwende nie UN, ...

    Als Anfänger kommt einem C++ und Programmieren dann als Liste von Verboten vor, ohne deren Grund zu verstehen (auf Dijkstra zu verweisen ist für einen Anfänger wie ihn vielleicht etwas zu hoch gegriffen). Ich finde es besser, in den anfangs noch überschaubaren Programmen diese Fehler zwangsweise zu machen und sich diese Regeln anzueignen, um sie zu vermeiden.



  • Vernünftige Bücher fangen auch nicht mit Pointern, goto, cstrings etc. an sondern bringen es direkt richtig bei. Erst bei Bedarf wird erklärt, wozu es warum benutzt wird.



  • Verwende nie const char*

    Das hat keiner gesagt.

    Rohe Zeiger mit new / delete gibt es auch, eben weiter unten, in irgendeinem Kasseninternum.

    Merksatz:
    Solange man weiß, was man tut
    ist alles supi gut.



  • Sone schrieb:

    Merksatz:
    Solange man weiß, was man tut
    ist alles supi gut.

    Wobei Anfänger lieber nicht nach dem Satz gehen sollten, weil sie denken, sie wüssten was sie tun, tun es aber nicht. Außerdem könnte ich auch immer mit CStrings und malloc/free arbeiten, dann weiß ich auch was ich tue, sinnvoll ist es trotzdem nicht.



  • Dummer Spruch, man schreibt Code meist nicht nur fuer sich selbst. Bei Code sollten auch andere leicht erkennen, was du tust.


Anmelden zum Antworten