Seite 1 von 1

Kleines Würfelprogramm

Verfasst: Mi Dez 17, 2014 9:03 pm
von listler
Hey Leute,
ich soll für die Uni ein kleines Würfelprogramm erstellen. Dieses soll mit einem normalen Würfel würfeln und zwar maximal 100 mal soll aber stoppen sobald 3 mal die 6 gewürfelt wurde.Abschließend soll es die Summe der gewürfelten Einsen, Zweien usw. ausgeben.
meine Idee bisher:

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main ()
{
 
int i,a,b,c,d,e,f;


srand ( time(NULL) );
 
 
 while(f<=3) {
     for (i=0;i<100;i++){
             int w1 = rand() % 6;
             if(w1==1) {
                       a++;
                       }
             if(w1==2) {
                       b++;
                       }
             if(w1==3) {
                       c++;
                       }
             if(w1==4) {
                       d++;
                       }
             if(w1==5) {
                       e++;
                       }
             if(w1==6){
                       f++;
                       }
             }
     }
printf("Es wurde insgesamt %i mal gewuerfelt!\n",i);
printf("Dabei wurde gewuerfelt:\n");
printf("%i mal die Eins\n",a);
printf("%i mal die Zwei\n",b);
printf("%i mal die Drei\n",c);
printf("%i mal die Vier\n",d);
printf("%i mal die Fuenf\n",e);
printf("%i mal die Sechs\n",f);

return 0;
}
Das klappt aber bisher noch nicht so wirklich. Könnt ihr mir sagen wo mein Fehler liegt?
Lg

Re: Kleines Würfelprogramm

Verfasst: Mi Dez 17, 2014 10:09 pm
von Xin
Da Du nicht beschreibst, welche Deiner Erwartungen nicht zutrifft, also was genau nicht klappt, nehme ich mal das erste, was mir einfällt: Du willst keine zwei ineinander verschachtelten Schleifen. Ineinander verschachtelt bedeutet "logisch und". 3 mal die 6 Würfeln und 100 mal gewürfelt haben.
Du willst "logisches oder". Du musst also eine Schleife formulieren, die endet, sobald eine der Bedingungen erreicht wird.

Re: Kleines Würfelprogramm

Verfasst: Sa Dez 20, 2014 11:56 pm
von Ersti
Hallo listler,

ich weiß nicht genau ob deine Frage bzw. Aufgabe noch aktuell ist, aber hier wäre eine Idee:

Code: Alles auswählen

break;
Mit dem Befehl 'break' kann eine Schleife vorzeitig beendet werden.

Beispiel:

Code: Alles auswählen

int i = 0;

   while(1){
                 i++;
                 if( i == 100) break; //Schleife endet sobald i 100 erreicht hat
   }
Damit können auch for-Schleifen vorzeitig beendet werden.

Code: Alles auswählen

int i;

for(i = 0; i < 10; i++){

     if(i == 5) break;
}
Wenn ich dein Problem richtig verstanden habe, soll die Schleife beendet werden wenn 3 mal eine 6 'gewürfelt' wurde oder i 100 beträgt. Ich hoffe ich konnte dir damit etwas helfen :)



EDIT: Das Problem wird vermutlich sein, dass erst 100 x 'gewürfelt' wird bevor f kleiner-gleich 3 verglichen wird. i ist damit immer 99. Und ich vermute f wird auch nie erhöht, da der Modulo zwischen 0 und 5 liegt.

Code: Alles auswählen

RandomNumber = rand() % 6 + 1;