Andrea's profileThe PachonomiconPhotosBlogListsMore Tools Help

Blog


    July 02

    Ora so tirarli un po' meglio

    /* Special thanks to Romaric for suggestions and testing */
     
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <time.h>
     
    double media(int *sumsum, int repeat);
    double devst(int *sumsum, int repeat, double mean);
     
    int main() {
     int tipo, *sumsum, i, j, N, repeat, mod;
        double mean, dev_st;
        time_t t1;
        time(&t1);
        srand((long)t1);
        printf("\n Inserire numero di dadi\n");
        scanf("%d", &N);
        printf(" Inserire numero di facce:\n");
        scanf("%d", &tipo);
        printf(" Inserire modificatore aggiuntivo:\n");
        scanf("%d", &mod);
            printf(" Quante volte devo iterare il processo?\n");
        scanf("%d", &repeat);
        sumsum = calloc(repeat*sizeof(int), sizeof(int));
        if (sumsum == NULL) {
                      printf("ERRORE: Non ho abbastanza memoria\n");
                      exit(1);
                      }
        int bar;
     printf(" Ho tirato %d volt%c %dd%d %c %d. Il risultato e' stato ", repeat, (repeat>1)? 'e' : 'a', N, tipo, (mod<0) ? '-' : '+', (unsigned)mod);
        for(i = 0; i < repeat; i++){
              for(j = 0; j < N; j++){
                 do{bar = (1+(rand() % tipo));} while(bar > tipo);
                    sumsum[i] += bar;
              }
              sumsum[i] += mod;
              if(sumsum[i]<0){sumsum[i] = 1;}
              printf("%d ", sumsum[i]);}
     if(repeat>1){
     mean = media(sumsum, repeat);
     dev_st = devst(sumsum, repeat, mean);
     printf("\n La media e' %f\n La deviazione standard e' %f\n La deviazione standard della media e' %f\n", mean, dev_st, dev_st/sqrt(repeat));}
     printf(" Premere invio per uscire \n");
     char oni;
        scanf("%c", &oni);
        scanf("%c", &oni);
     printf("\n Hai premuto %c. Ciao Ciao!!!", oni);
     return 0;
     }
     
    double media(int *sumsum, int repeat){
     int i, sum = 0;
     double mean;
     for (i = 0; i < repeat; i++){
      sum += sumsum[i];
      }
     mean = ((double)sum/(double)repeat);
     if(repeat>1){printf("\n La somma e' %d", sum);}
     return mean;
    }
     
    double devst(int *sumsum, int repeat, double mean){
     int i;
     double dev, sqsum;
     for(i = 0; i < repeat; i++){
      sqsum += (((double)sumsum[i] - mean) * ((double)sumsum[i] - mean));
     }
     dev = sqrt((double)(sqsum/(repeat-1)));
     return dev;
    }

    Ora so tirare i dadi

    /* Dedicato a Monia */
     
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <time.h>
     
    double media(int *risultato, long N);
    double devst(int *risultato, long N, double mean);
     
    int main() {
     int tipo, *risultato, i;
     long N;
        double mean, dev_st;
     time_t t1;
     time(&t1);
     srand((long)t1);
     printf("\n Inserire numero di dadi\n");
     scanf("%ld", &N);
     printf(" Inserire numero di facce:\n");
     scanf("%d", &tipo);
     risultato = malloc(N*sizeof(int));
     
     for(i = 0; i < N; i++){
      do{risultato[i] = (1+(rand() % tipo));} while(risultato[i] > tipo || risultato[i] < 1);
     }
     printf(" Ho tirato %d dad%c (%dd%d). Il risultato e' stato ", N, (N==1)? 'o' : 'i', N, tipo);
     for(i = 0; i < N; i++){
      printf("%d ", risultato[i]);}
     if(N>1){
     mean = media(risultato, N);
     dev_st = devst(risultato, N, mean);
     printf("\n La media e' %f\n La deviazione standard e' %f\n La deviazione standard della media e' %f\n", mean, dev_st, dev_st/sqrt(N));}
     printf(" Premere invio per uscire \n");
     char oni;
        scanf("%c", &oni);
        scanf("%c", &oni);
     printf("\n Hai premuto %c. Ciao Ciao!!!", oni);
     return 0;
     }
     
    double media(int *risultato, long N){
     int i, sum = 0;
     double mean;
     for (i = 0; i < N; i++){
      sum += risultato[i];
      }
     mean = ((double)sum/(double)N);
     if(N>1){printf("\n La somma e' %d", sum);}
     return mean;
    }
     
    double devst(int *risultato, long N, double mean){
     int i;
     double dev, sqsum;
     for(i = 0; i < N; i++){
      sqsum += (((double)risultato[i] - mean) * ((double)risultato[i] - mean));
     }
     dev = sqrt((double)(sqsum/(N-1)));
     return dev;
    }
    /* ... E domani esame di informatica... in becco al gufo a me */