/***********************************************
** ProjectA: Character Analysis		      **
** Subject : 433-142 Computing Fundamentals B **
** Date	   : 22th August, 2001 	     	      **
** Name	   : Huang Jian	 	  	      **
** Enrolment number: 126432		      **
***********************************************/

#include <stdio.h>
#include <ctype.h>

int main()
{
  int i, total = 0, ch;
  int frequency[6] = {0,0,0,0,0,0}; /*integer array for frequency output*/
  double percentage[6];		    /*double array for percentage output*/
  char category[][12] = { "Uppercase", "Lowercase", "Digits",
		          "Space", "Control", "Punctuation" };

  printf ("Start Typing :-\n");
	
  ch = getchar();
	
  if (ch == EOF) printf ("Empty File\n"); /*if 1st character is EOF*/
  else	 				  /*if 1st character is not EOF*/
  {
     while (ch != EOF)
     {
        if (isupper (ch)) frequency[0]+=1; /*increment respective array item*/
        else if (islower (ch)) frequency[1]+=1;
        else if (isdigit (ch)) frequency[2]+=1;
        else if (isspace (ch)) frequency[3]+=1;
        else if (iscntrl (ch)) frequency[4]+=1;
        else if (ispunct (ch)) frequency[5]+=1;
        total++;
	ch = getchar();		/*pick the next character*/
     }

     printf ("\nType\t\tFrequency\tPercentage\n"); /*print title */
     for (i=1; i<=42; i++) printf ("=");	       /*print 42 "="*/
     printf ("\n");

     for (i=0; i<=5; i++)  /*calculate percentage for each frequency*/
       percentage[i] = frequency[i] / (double)total * 100;	
	
     for (i=0; i<=5; i++)  /*output from the arrays*/
       printf ("%-16s%-16d%-10.2f\n", category[i], frequency[i], percentage[i]);
  }
	
  return 0;
}
