[C-Projekt] Würfel-Simulator (Konsolenprogramm)
-
/* Titel : Wuerfel-Simulator Autor : Letzte Aenderung : 15.06.2009 */ #include <stdio.h> #include <stdlib.h> #include <time.h> void fkt(int array[],int laenge, int *wdh) { int i,x; for(i=0;i<=(*wdh-1);i++) { x=rand()%7; switch(x) { case 0: i--; continue; case 1: array[0]++; break; case 2: array[1]++; break; case 3: array[2]++; break; case 4: array[3]++; break; case 5: array[4]++; break; case 6: array[5]++; break; default: break; } } } void ausgabe(int array[],int *count) { printf("Relative Haeufigkeit von Augenzahl 1\t:\t%d/%d = %.4f = %.4f%%\n",array[0],*count,(float)array[0]/(*count),((float)array[0]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 2\t:\t%d/%d = %.4f = %.4f%%\n",array[1],*count,(float)array[1]/(*count),((float)array[1]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 3\t:\t%d/%d = %.4f = %.4f%%\n",array[2],*count,(float)array[2]/(*count),((float)array[2]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 4\t:\t%d/%d = %.4f = %.4f%%\n",array[3],*count,(float)array[3]/(*count),((float)array[3]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 5\t:\t%d/%d = %.4f = %.4f%%\n",array[4],*count,(float)array[4]/(*count),((float)array[4]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 6\t:\t%d/%d = %.4f = %.4f%%\n",array[5],*count,(float)array[5]/(*count),((float)array[5]/(*count))*100); printf("\n"); } int main() { srand(time(NULL)); while(1) { unsigned int array[6]={0,0,0,0,0,0}, count; printf("Erwuenschte Anzahl der Wiederholungen: "); scanf("%d", &count); fflush(stdin); printf("\n"); fkt(array, 6, &count); ausgabe(array, &count); } system("PAUSE"); return 0; }
So, das ist mein zweites aktuelles Projekt in C
Verbesserungsvorschläge oder Bugs bitte melden bzw. posten, DANKE!Zum Programm:
Das Programm simuliert einen Würfel der nach wunsch so und so viel mal gewürfelt wird. Anschließend wertet das Programm die relative Häufigkeit aus (4 Nachkommastellen genau). Somit bleibt die Arbeit erspart und der Computer macht eben die Sklavenarbeit :p
Grüße
agi
-
aXYZn schrieb:
/* void ausgabe(int array[],int *count) { printf("Relative Haeufigkeit von Augenzahl 1\t:\t%d/%d = %.4f = %.4f%%\n",array[0],*count,(float)array[0]/(*count),((float)array[0]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 2\t:\t%d/%d = %.4f = %.4f%%\n",array[1],*count,(float)array[1]/(*count),((float)array[1]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 3\t:\t%d/%d = %.4f = %.4f%%\n",array[2],*count,(float)array[2]/(*count),((float)array[2]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 4\t:\t%d/%d = %.4f = %.4f%%\n",array[3],*count,(float)array[3]/(*count),((float)array[3]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 5\t:\t%d/%d = %.4f = %.4f%%\n",array[4],*count,(float)array[4]/(*count),((float)array[4]/(*count))*100); printf("Relative Haeufigkeit von Augenzahl 6\t:\t%d/%d = %.4f = %.4f%%\n",array[5],*count,(float)array[5]/(*count),((float)array[5]/(*count))*100); printf("\n"); }
du scheinst ja schleifen schon zu kennen, das schreit gerade zu nach einer
-
for(i = 0; i <= (*wdh-1); i++) array[rand() % 6]++;
hmmm...
-
fflush(stdin) solltest du nicht verwenden. Ist zwar beim MS-Compiler erlaubt, aber woanders dann vielleicht nicht mehr. Es gibt standard-konforme Lösungen, guckst du hier:
-
/* Titel : Wuerfel-Simulator Autor : Letzte Aenderung : 16.06.2009 */ #include <stdio.h> #include <stdlib.h> #include <time.h> void ausgabe(int*, int*); int main() { srand(time(NULL)); while(1) { unsigned int array[6]={0,0,0,0,0,0}, anz; int c; printf("Erwuenschte Anzahl der Wiederholungen: "); scanf("%d", &anz); while((c = getchar()) != EOF && c != '\n'); // fflush Alternative ausgabe(array, &anz); } } void ausgabe(int array[], int *wdh) { int i; for(i=0; i < (*wdh); i++) { array[rand() % 6]++; } printf("\n"); printf("Relative Haeufigkeit von Augenzahl 1\t:\t%d/%d = %.3f = %.4f%%\n",array[0],(*wdh),(float)array[0]/(*wdh),((float)array[0]/(*wdh))*100); printf("Relative Haeufigkeit von Augenzahl 2\t:\t%d/%d = %.3f = %.4f%%\n",array[1],(*wdh),(float)array[1]/(*wdh),((float)array[1]/(*wdh))*100); printf("Relative Haeufigkeit von Augenzahl 3\t:\t%d/%d = %.3f = %.4f%%\n",array[2],(*wdh),(float)array[2]/(*wdh),((float)array[2]/(*wdh))*100); printf("Relative Haeufigkeit von Augenzahl 4\t:\t%d/%d = %.3f = %.4f%%\n",array[3],(*wdh),(float)array[3]/(*wdh),((float)array[3]/(*wdh))*100); printf("Relative Haeufigkeit von Augenzahl 5\t:\t%d/%d = %.3f = %.4f%%\n",array[4],(*wdh),(float)array[4]/(*wdh),((float)array[4]/(*wdh))*100); printf("Relative Haeufigkeit von Augenzahl 6\t:\t%d/%d = %.3f = %.4f%%\n",array[5],(*wdh),(float)array[5]/(*wdh),((float)array[5]/(*wdh))*100); printf("\n"); }
WOW, danke _matze und hustbaer
Grüße
agiEdit:
-
aXYZn schrieb:
matze_
Hey! Es heißt _matze, bitte. Der Unterstrich ist mir sehr wichtig...
-
printf hättest in dem fall aber auch in ne schleife packen können, oder überseh ich grad was
-
PRIEST schrieb:
printf hättest in dem fall aber auch in ne schleife packen können, oder überseh ich grad was
void ausgabe (int array[], int wdh) { int i; for(i=0; i < wdh; i++) array[rand() % 6]++; for (i=0; i<6; i++) printf("Relative Haeufigkeit von Augenzahl %d\t:\t%d/%d = %.3f = %.4f%%\n", i+1, array[i], wdh, (float)array[i]/wdh, (float)array[i]/wdh*100); }
wdh muß nicht als Zeiger übergeben werden