#include <stdio.h> #include <stdlib.h> #include <time.h> #define NLANCI 6 #define GMIN 1 #define GMAX 100000 void lanciaDadi(int dadi[NLANCI]); void ordinaDadi(int dadi[NLANCI]); void salvaFrequenze(int freq[NLANCI + 1], int Ng); int main() { int Ng = 0, i, j; int freq[NLANCI + 1] = {0}; int p1[NLANCI], p2[NLANCI]; int N_gino = 0, N_pareggi = 0; srand48(time(NULL)); do { printf("Inserire il numero di giocate, compreso tra %d e %d: \n", GMIN, GMAX); scanf("%d", &Ng); } while(Ng < GMIN || Ng > GMAX); for(i = 0; i < Ng; i++) { lanciaDadi(p1); lanciaDadi(p2); ordinaDadi(p1); ordinaDadi(p2); int P_gino = 0, P_mario = 0; for(j = 0; j < NLANCI; j++) { if(p1[j] > p2[j]) { P_gino++; } if(p2[j] > p1[j]) { P_mario++; } } freq[P_gino]++; if(P_gino > P_mario) { N_gino++; } else if(P_gino == P_mario) { N_pareggi++; } } salvaFrequenze(freq, Ng); printf("Numero giocate: %d\n", Ng); printf("Gino ha vinto %d volte, Mario ha vinto %d volte\n", N_gino, Ng - N_gino - N_pareggi); printf("Numero di pareggi: %d\n", N_pareggi); return 0; } void lanciaDadi(int dadi[NLANCI]) { int i; for(i = 0; i < NLANCI; i++) { dadi[i] = drand48() * 6 + 1; } } void ordinaDadi(int dadi[NLANCI]) { int i, j, tmp; for(i = 0; i < NLANCI - 1; i++) { for(j = 0; j < NLANCI - 1 - i; j++) { if(dadi[j] < dadi[j + 1]) { tmp = dadi[j]; dadi[j] = dadi[j + 1]; dadi[j + 1] = tmp; } } } } void salvaFrequenze(int freq[NLANCI + 1], int Ng) { int i; FILE *output = fopen("freq.dat", "w"); if(output == NULL) { printf("Impossibile aprire il file\n"); exit(1); } for(i = 0; i < NLANCI + 1; i++) { fprintf(output, "%d %.4lf\n", i, freq[i] / (double) Ng); } fclose(output); }