Zufallszahlen mit Beispiel Würfel-->komme nicht zum Ergebnis



  • hier noch mal überarbeitet, aber läuft immer noch nicht vernünftig!

    zählt nicht richtig....

    warum?

    fehlt da was?

    #include <iostream.h>
      #include <stdlib.h>
      #include <conio.h>
      #include <time.h>
      using namespace std; 
    
    int main()
    
    {
    
    int iWurf;
    int iZaehler;
    int iZahl=0;
    int iSumme=0;
    int iAnzahleinser=0, iAnzahlzweier=0, iAnzahldreier=0, iAnzahlvierer=0, iAnzahlfuenfer=0, iAnzahlsechser=0;
    
      for (iZaehler=1; iZaehler<5; iZaehler++)
         {
            iWurf = 1+(rand()%6);
            cout<<"\nDer " << iZaehler << ". Wurf : "<< iWurf << endl;
            iSumme= iSumme+iWurf;
            cout<<endl;
         }
           cout<<"Die Summe lautet: "<<iSumme;
           cout<<endl;
           cout<<endl;
    
           cout<<"fuer Ueberpruefung der Haufigkeit der Zahlen waehlen Sie: 1, 2, 3, 4, 5 oder 6: \n" ;
           cin>>iZahl;
           cout<<endl;
    
          switch (iZahl)
    
               {
    
                    case 1 :   iAnzahleinser = iAnzahleinser+1;
                                 cout<<"die Haufigkeit des Wuerfels 1 betraegt: " <<iAnzahleinser;
                    break;
    
                    case 2 :   iAnzahlzweier = iAnzahlzweier+1;
                                 cout<<"die Haufigkeit des Wuerfels 2 betraegt: " <<iAnzahlzweier;
                    break;
    
                    case 3 :   iAnzahldreier = iAnzahldreier+1;
                                 cout<<"die Haufigkeit des Wuerfels 3 betraegt: " <<iAnzahldreier;
                    break;
    
                    case 4 :   iAnzahlvierer = iAnzahlvierer+1;
                                 cout<<"die Haufigkeit des Wuerfels 4 betraegt: " <<iAnzahlvierer;
                    break;
    
                    case 5 :   iAnzahlfuenfer = iAnzahlfuenfer+1;
                                 cout<<"die Haufigkeit des Wuerfels 5 betraegt: " <<iAnzahlfuenfer;
                    break;
    
                    case 6 :   iAnzahlsechser = iAnzahlsechser+1;
                                 cout<<"die Haufigkeit des Wuerfels 6 betraegt: " <<iAnzahlsechser;
                    break;
    
                    default  :   cout<<"falscher Wurf ";
    
                    break;
                    cout<<endl;
               }
    
              getch();
    
    }
    


  • die anzahleinser, anzahlzweier,... bekommen ja von dem durchlauf in der schleife nichts mit .. so kannst du diese auch nicht hochzählen..
    was du machst ist einfach jeder variablen eine 1 zuzuweisen ..in dem du 0+1 machst.

    gruss



  • Du machst es viel zu kompliziert! Warum switch 😕 Mit Arrays geht so was doch deutlich einfacher, da man die Anzahlen direkt über den Index hochzählen kann.

    #include <iostream>
    #include <ctime>
    using namespace std;
    
    int main()
    {
    	int alleAnzahlen[6] = {0};
    	int n = 100, i;
    
    	srand(time(0));
    
    	for (i=0; i<n; ++i)
    		++alleAnzahlen[(rand()%6)];
    
    	for (i=0; i<6; ++i)
    		cout << "Es wurde " << alleAnzahlen[i] << " mal " << (i+1) << " gew\x81rfelt." << endl;
    
        cin.get();
    }
    


  • weil ich mich mit arrays noch nicht auskenne!

    ich weiß ist kompleziert, aber was leichteres fällt mich nicht ein!

    und wie mache ich das, dass die zahlen gezählt bzw. aufaddiert werden?

    wie weise ich ihm das zu?weil

    bei switch sollte er ja gucken, welche zahl betroffen ist, wenn 1 dann das und das usw.

    aber wie genau mache ich diese aufzählung?

    gruß



  • mit switch ist das ein wenig schwer .. soweit ich das jetzt überblicke müsstest du dir eine Funktion schreiben, die du dann bei jedem case nach der addition wieder erneut aurufst ..

    case 1 :   iAnzahleinser = iAnzahleinser+1;
               cout<<"die Haufigkeit des Wuerfels 1 betraegt: " <<iAnzahleinser;
               counter();
    

    korrigiert mich wenn ich daneben liege .. 🙄



  • waldemator schrieb:

    bei switch sollte er ja gucken, welche zahl betroffen ist, wenn 1 dann das und das usw.

    aber wie genau mache ich diese aufzählung?

    Wenn du keine arrays benutzt, musst du für das Inkrementieren (Hochzählen) AUCH switch benutzen, wenn 1, dann inkrementiere iAnzahleinser usw. Wenn du Arrays benutzt, kannst du sowohl das Auslesen als auch das Inkrementieren direkt machen, weil du alle Anzahlen mit einer einzigen Variablen ansprechen kannst. Eine einzelne Anzahl kann man so direkt über den Abstand vom Anfang, auch Array-Index genannt, ansprechen.



  • ich kenne die array funktion nicht, außerdem wie meint ihr dann jedes mal eine funktion schreiben?

    ich habe es immer noch nicht am laufen, er läuft zwar durch, aber zählt nicht das richtige zusammen!

    es kommt immer als häufigkeit nur eine 1 raus...



  • Du mußt in der Schleife, wo du die Zufallszahlen ermittelst, auch die Zählvariablen entsprechend erhöhen:

    for (iZaehler=1; iZaehler<5; iZaehler++)
    {
      iWurf = 1+(rand()%6);
      cout<<"\nDer " << iZaehler << ". Wurf : "<< iWurf << endl;
      iSumme= iSumme+iWurf;
      cout<<endl;
      switch(iWurf)
      {
      case 1: iAnzahleinser++;break;
      case 2: iAnzahlzweier++;break;
      //... 'case 3' bis 'case 6' analog
      }
    }
    cout<<"Welche Anzahl wollen Sie wissen?\n";
    cin>>iZahl;
    switch(iZahl)
    {
    case 1: cout<<"Es wurden "<<iAnzahleinser<<" Einser gewürfelt."<<endl;break;
    //... 'case 2' bis 'case 6' analog
    default:cout<<"Es gibt keinen Wert "<<iZahl<<" auf dem Würfel."<<endl;
    }
    

    PS: Ein "Array" ist keine Funktion, sondern ein Datentyp, der mehrere gleichartige Werte (z.B. Zahlen) Speichern kann - wie dein Programm mit Arrays aussehen kann, hat z.B. schorch demonstriert.



  • update:

    irgendwie fehlt hier immer noch was, solangsam verliere ich den überblick!

    #include <iostream.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <time.h>
      using namespace std;
    
    int main()
    
    {
    
    int iWurf;
    int iZaehler;
    int iZahl=0;
    int iSumme=0;
    int iAnzahleinser=0, iAnzahlzweier=0, iAnzahldreier=0, iAnzahlvierer=0, iAnzahlfuenfer=0, iAnzahlsechser=0;
    
      for (iZaehler=1; iZaehler<20; iZaehler++)
         {
            iWurf = 1+(rand()%6);
            cout<<"\nDer " << iZaehler << ". Wurf : "<< iWurf << endl;
    
            cout<<endl;
         }
    
           cout<<endl;
           cout<<endl;
    
           switch(iWurf)
           {
    
            case 1: iAnzahleinser++;
                    break;
            case 2: iAnzahlzweier++;
                    break;
            case 3: iAnzahldreier++;
                    break;
            case 4: iAnzahlvierer++;
                    break;
            case 5: iAnzahlfuenfer++;
                    break;
            case 6: iAnzahlsechser++;
                    break;
            default: cout<<"falsch";
            }
            cout<<endl;
            cout<<endl;
    
            cout<<"fuer Ueberpruefung der Haufigkeit der Zahlen waehlen Sie: 1, 2, 3, 4, 5 oder 6: \n" ;
            cin>>iZahl;
            cout<<endl;
    
               switch (iZahl)
    
               { 
    
                    case 1 :
                                  cout<<"die Haufigkeit des Wuerfels 1 betraegt: " <<iAnzahleinser;
                    break;
    
                    case 2 :   iAnzahlzweier = iAnzahlzweier+1;
                                 cout<<"die Haufigkeit des Wuerfels 2 betraegt: " <<iAnzahlzweier;
                    break;
    
                    case 3 :   iAnzahldreier = iAnzahldreier+1;
                                 cout<<"die Haufigkeit des Wuerfels 3 betraegt: " <<iAnzahldreier;
                    break;
    
                    case 4 :   iAnzahlvierer = iAnzahlvierer+1;
                                 cout<<"die Haufigkeit des Wuerfels 4 betraegt: " <<iAnzahlvierer;
                    break;
    
                    case 5 :   iAnzahlfuenfer = iAnzahlfuenfer+1;
                                 cout<<"die Haufigkeit des Wuerfels 5 betraegt: " <<iAnzahlfuenfer;
                    break; 
    
                    case 6 :   iAnzahlsechser = iAnzahlsechser+1;
                                 cout<<"die Haufigkeit des Wuerfels 6 betraegt: " <<iAnzahlsechser;
                    break; 
    
                    default  :   cout<<"falscher Wurf ";
    
                    break;
                    cout<<endl;
               }
    
              getch();
    
    }
    


  • So muss der Code aussehen:

    int main(int argc, char* argv[])
    {
         int iWurf;
    int iZaehler; 
    int iZahl=0;
    int iSumme=0; 
    int iAnzahleinser=0, iAnzahlzweier=0, iAnzahldreier=0, iAnzahlvierer=0, iAnzahlfuenfer=0, iAnzahlsechser=0; 
    
      for (iZaehler=1; iZaehler<20; iZaehler++) 
         { 
            iWurf = 1+(rand()%6);
            cout<<"\nDer " << iZaehler << ". Wurf : "<< iWurf << endl; 
    
            cout<<endl;
            switch(iWurf)
           {
    
            case 1: iAnzahleinser++;
                    break;
            case 2: iAnzahlzweier++;
                    break;
            case 3: iAnzahldreier++;
                    break;
            case 4: iAnzahlvierer++; 
                    break; 
            case 5: iAnzahlfuenfer++;
                    break; 
            case 6: iAnzahlsechser++;
                    break; 
            default: cout<<"falsch"; 
            }
         }
    
           cout<<endl; 
           cout<<endl; 
    
            cout<<endl;
            cout<<endl;
    
            cout<<"fuer Ueberpruefung der Haufigkeit der Zahlen waehlen Sie: 1, 2, 3, 4, 5 oder 6: \n" ;
            cin>>iZahl;
            cout<<endl;
    
               switch (iZahl)
    
               {
    
                    case 1 :
                                  cout<<"die Haufigkeit des Wuerfels 1 betraegt: " <<iAnzahleinser;
                    break;
    
                    case 2 :   iAnzahlzweier;
                                 cout<<"die Haufigkeit des Wuerfels 2 betraegt: " <<iAnzahlzweier;
                    break; 
    
                    case 3 :   iAnzahldreier;
                                 cout<<"die Haufigkeit des Wuerfels 3 betraegt: " <<iAnzahldreier; 
                    break;
    
                    case 4 :   iAnzahlvierer;
                                 cout<<"die Haufigkeit des Wuerfels 4 betraegt: " <<iAnzahlvierer;
                    break; 
    
                    case 5 :   iAnzahlfuenfer;
                                 cout<<"die Haufigkeit des Wuerfels 5 betraegt: " <<iAnzahlfuenfer;
                    break;
    
                    case 6 :   iAnzahlsechser;
                                 cout<<"die Haufigkeit des Wuerfels 6 betraegt: " <<iAnzahlsechser;
                    break;
    
                    default  :   cout<<"falscher Wurf ";
    
                    break;
                    cout<<endl;
               }
    
              getch();
         return 0;
    }
    

Anmelden zum Antworten