/* Analizza pi1000.txt, creato con echo "scale=1000; 4*a(1)" | BC_LINE_LENGTH=0 bc -l > pi1000.txt Continuazione di analizza_pi_1.c per fare un po' di statistica sulle cifre */ #include #include #include #include int main() { FILE *fp; char pi[1010]; int i, di, nc, dec; char cifra; int cifre[10] = {0}; // notare l'inizializzazione fp = fopen("pi1000.txt", "r"); fscanf(fp, "%[^a]", pi); printf("%s", pi); printf("ho letto %lu caratteri\n", strlen(pi)); // il file va chiuso quando non serve piĆ¹ e non semplicemente alla fine fclose(fp); // vediamo come trasformare i caratteri in cifre for (i=2; i < 10; i++) { cifra = pi[i] - '0'; printf("i=%2d: p[i]: %c; cifra %d\n", i, pi[i], cifra); } // ora facciamo un po' di statistica delle cifre dopo la virgola // for (i=2; i < (strlen(pi)-3); i++) { nc=0; for (i=2; i < strlen(pi); i++) { if( !isdigit( pi[i] ) ) continue; // controllo di sicurezza // meglio paranoici che distruggere missili nc++; cifre[ pi[i] - '0' ]++; } // stampiamo la statistica printf("\n analizzate %d cifre dopo la 'virgola'\n", nc); for (i=0; i<10; i++) { printf("%d : %d\n", i, cifre[i]); } return 0; }