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