Page 374 - Programming Microcontrollers in C
P. 374
Coding the Alpha Data 359
Frequency\n\n”);
for(i=0;i<LETTERS/2;i++)
printf(“ %c %7.4f %c %7.4f\n”,
letters[i].letter,
100.*letters[i].count/characters,
letters[i+LETTERS/2].letter,
100.*letters[i+LETTERS/2].count/characters);
printf(“There are %d characters\n”,characters);
sum=0.;
for(i=0;i<LETTERS;i++)
{
a=1.*letters[i].count/characters;
a=(a!=0)?a:0.00001;
sum += -a*log(a);
}
sum /=log(2);
printf(“The theoretical average bits per char
acter is %f\n”,sum);
}
/* shellsort: sort v[0] ... v[n-1] into increasing
order */
void shellsort(Entry v[], int n)
{
int gap,i,j;
Entry temp;
for(gap=n/2;gap>0;gap /= 2)
for(i=gap;i<n;i++)
for(j=i-gap;j>=0 && v[j].count<v[j+gap].count;j-=gap)
{
temp=v[j];
v[j]=v[j+gap];
v[j+gap]=temp;
}
}
Listing 7-5: Letter Analysis Program