Program for frequency counting

Program 28) Given below is the list of marks obtained by a class of 50 students in annual examination.

43 65 51 27 79 11 56 61 82 09 25 36 07 49 55 63 74 81 49 37
40 49 16 75 87 91 33 24 58 78 65 56 76 45 54 36 63 12 21
 73 49 51 19 39 49 68 93 85 59

Write a program to count the number of students belonging to each of following group of marks:
 0 - 9, 10 - 19, 20 - 29, ...., 100

This program uses the array group containing 11 elements, one for each range of marks. Each element counts those values falling within the range of values it represents.
For any value, we can determine the correct group element by dividing the value by 10. For example, consider the value 49. The integer division of 59 by 10 yields 5. This element into which 59 in counted.

                                   PROGRAM

 #define MAXVAL 50
#define COUNTER 11
main ( )
 {
          float  value [MAXVAL] ;
          int     i, low, high ;
          int   group [COUNTER] = {0,0,0,0,0,0,0,0,0,0,0} ;
        
                   /*    READING AND COUNTING    */
                   for (i = 0; i < MAXVAL; i++)
                   {
                   /*    READING OF VALUES    */
                       scanf ("%f", &value [i]) ;
                   /*  COUNTING FREQUENCY OF GROUPS   */
                       ++ group [(int) (value[i] / 10] ;
                   }
                   /*     PRINTING OF FREQUENCY TABLE   */
                   printf ("\n") ;
                   printf (" GROUP   RANGE   FREQUENCY\n\n) ;
                   for (i = 0; i < COUNTER; i++)
                   {
                        low = i * 10 ;
                        if (i == 10) ;
                           high = 100 ;
                    else
                          high = low + 9 ;
                    printf (" %2d %3d to %3d %d\n",
                                 i + 1, low, high, group [i]) ;
                   }
  }


Output: 

 43 65 51 27 79 11 56 61 82 09 25 36 07 49 55 63 74
81 49 37 40 49 16 75 86 91 33 24 58 78 65 56 76 67  ( Input
45 54 36 63 12 21 73 49 51 19 39 49 68 93 85 59          data)
     GROUP                RANGE                FREQUENCY
       1                        0   to   9                       2
       2                       10  to  19                      4
       3                       20  to  29                      4
       4                       30  to  39                      5
       5                       40  to  49                      8
       6                       50  to  59                      8
       7                       60  to  69                      7
       8                       70  to  79                      6
       9                       80  to  89                      4
      10                      90  to  99                      2
      11                     100 to 100                     0

 Note that we have used an initialization statement.
    int group [COUNTER] = {0,0,0,0,0,0,0,0,0,0,0} ;
   which can be replaced by
                     int group [COUNTER] = {0} ;
This will initialize all the elements to zero.   
 

No comments:

Post a Comment