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);
}