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
   369   370   371   372   373   374   375   376   377   378   379