Il codice è giusto. è sbagliata la printf. I valori sono in percentuale.
prova questo..
codice:#include<stdlib.h> #include<stdio.h> #include<string.h> #include <iostream.h> int main() { long totale, i, temp; unsigned char c; float frequenze[256]; FILE*fp1; fp1=fopen("capitolo1.txt", "r"); if (fp1==NULL) { printf("Non ho trovato il file.\n"); } for (i=0; i<256; i++) { frequenze[i]=0; } totale =0; while(fscanf(fp1, "%c", &c)==1) { if ((c < 0)||(c > 256)) { printf("il carattere %c non e' fra 0-255!\n", c); getchar(); exit(-1); } temp=(int)c; frequenze[temp]=frequenze[temp]+1; totale =totale +1; } cout << "totale " << totale << endl; for (i=1; i<256; i++) { frequenze[i]=(frequenze[i]*100)/totale; //printf("n= ", i, " frequenza di " , char(i), " = ", frequenze[i], " %"); cout << " n= " << i << " char = " << char(i) << " freq = " << frequenze[i] << endl; } fflush(stdin); getchar(); exit(0); }

Rispondi quotando