#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_LANCI 1000
int lancia2Dadi();
void lanciaDadi(char *filelanci);
float frequenze(char *filelanci, char *filefreq);
int main (void)
{
char filelanci[13];
char filefrequenze[13];
float media;
printf("Immetti il nome del file per i risultati dei lanci: ");
scanf("%12s", &filelanci);
lanciaDadi(filelanci);
printf("Immetti il nome del file per le frequenze dei risultati: ");
scanf("%12s", &filefrequenze);
media = frequenze(filelanci, filefrequenze);
printf("La media e` %g\n", media);
return 0;
}
int lancia2Dadi()
{
int d1, d2;
d1 = 1 + rand() % 6;
d2 = 1 + rand() % 6;
return d1 + d2;
}
void lanciaDadi(char *filelanci)
{
FILE *fp;
int seed;
int i;
printf("Immetti un intero di inizializzazione: ");
scanf("%u", &seed);
srand(seed);
if ((fp = fopen(filelanci, "w")) == NULL) {
printf("Errore in apertura in scrittura del file %s!\n", filelanci);
exit(1);
}
for (i = 0; i < NUM_LANCI; i++)
fprintf(fp, "%d\n", lancia2Dadi());
fclose(fp);
}
float frequenze(char *filelanci, char *filefreq)
{
int ris;
int somma = 0;
int frequenze[11] = { 0 };
FILE *fp;
int i;
if ((fp = fopen(filelanci, "r")) == NULL) {
printf("Errore in apertura in lettura del file %s!\n", filelanci);
exit(1);
}
for (i = 0; i < NUM_LANCI; i++) {
fscanf(fp, "%d", &ris);
somma += ris;
frequenze[ris - 2]++;
}
fclose(fp);
if ((fp = fopen(filefreq, "w")) == NULL) {
printf("Errore in apertura in scrittura del file %s!\n", filefreq);
exit(1);
}
fprintf(fp, "Risultato Frequenza\n");
for (i = 2; i <= 12; i++)
fprintf(fp, "%9d %9d\n", i, frequenze[i-2]);
fclose(fp);
return (float)somma / NUM_LANCI;
}