Wednesday, December 31, 2014

Program in C to make a vertical , frequency distribution , histogram for various characters as present in the input text.

The following program in C draws a Vertical , frequency distribution , histogram for the various characters as present in the input text .

CAUTION : As i have declared variables within the beginning for loop parentheses , hence ,  Please compile the following program in C99 mode.If you are on Linux/Unix then you may compile it in C99 mode by typin “ -std=gnu99” or “ -std=c99 “.

Program follows :

/*Program in C to print a vertical histogram of the frequencies of different characters in its input*/ 

#include<stdio.h> 
int main(){ 
int i,j,t,q,a,flag; 
char text[1000]; 
char collector[128]; 

for(i=0;i<=127;++i){collector[i]=0;} 

printf("Enter the text hither : \n"); 
scanf("%[^\n]",text); 
i=0; 
while(text[i]!='\0'){ 
j=text[i]; 
collector[j]=collector[j]+1; 
    ++i; 
                 } 
t=0; 
for(int q=0;q<=127;++q){if(collector[q]>0){++t;}} 
char cart[t]; 
char ascii[t]; 

i=0; 
q=0; 
for(;q<127;++q){if(collector[q]>0){ 
                   cart[i]=collector[q]; 
                             ascii[i]=q; 
                                    ++i; 
                                  } 
               } 

printf("\n\nThe frequency distribution Histogram of characters :\n"); 
printf("\nfrequency\n"); 

for(int y=t+5;y>=1;--y){ 

if(y%2==0){    

        if(y>8){ 

                printf("        %d|",y); 
            
               } 
            else{           
               printf("        %d |",y); 
                } 
            
for(int r=0;r<t;++r){ 

if(cart[r]==y){ 

if(r==0){ 

printf("^"); 

        }else{ 

              printf(" ^"); 

             } 

cart[r]=cart[r]-1; 
              }else{ 

                  printf("  "); 

                   } 
                    }printf("\n"); 

          } else{ 
                printf("          |"); 

flag=0; 
for(int r=0;r<t;++r){ 

if(cart[r]==y){ 

if(r==0){ 

printf("^"); 

        }else{ 

              printf(" ^"); 

             } 

cart[r]=cart[r]-1; 
              }else{ 

                  printf("  "); 

                   } 
                    } 
printf("\n"); 

               } 
                       } 
printf("          -------------------------------------------\n"); 

printf("          "); 

for(int a=0;a<t;++a){ 

printf(" %c",ascii[a]); 
                     } 

printf("\n"); 
return 0; 
} 





Sample Output

No comments:

Post a Comment