Professional Documents
Culture Documents
Chapter 11 CS
Chapter 11 CS
Chapter 11 CS
Marks obtained
45 67 38 55
77 89 56 69
- - - -
It is required to compute the total marks obtained by each student and print the rank list based on
the total marks.
The program in Fig.11.14 stores the student names in the array name and the marks in the array
marks. After computing the total marks obtained by all the students, the program prepares and
prints the rank list. The declaration
int
marks[STUDENTS][SUBJECTS+1];
defines marks as a pointer to the array's first row. We use rowptr as the pointer to the row of
marks. The rowptr is initialized as follows:
int (*rowptr)[SUBJECTS+1] = array;
Note that array is the formal argument whose values are replaced by the values of the actual
argument marks. The parentheses around *rowptr makes the rowptr as a pointer to an array of
SUBJECTS+1 integers. Remember, the statement
int
*rowptr[SUBJECTS+1];
char name[STUDENTS][20];
int marks[STUDENTS][SUBJECTS+1];
printf("Input students names & their marks in four subjects\n");
get_list(name, marks, STUDENTS, SUBJECTS);
get_sum(marks, STUDENTS, SUBJECTS+1);
printf("\n");
print_list(name,marks,STUDENTS,SUBJECTS+1);
get_rank_list(name, marks, STUDENTS, SUBJECTS+1);
printf("\nRanked List\n\n");
print_list(name,marks,STUDENTS,SUBJECTS+1);
}
/*
*/
get_list(char *string[ ],
int array [ ] [SUBJECTS +1], int m, int n)
{
int
i, j, (*rowptr)[SUBJECTS+1] = array;
*/
}
/*
get_rank_list(char *string [ ],
int array [ ] [SUBJECTS + 1]
int m,
int n)
{
int i, j, k, (*rowptr)[SUBJECTS+1] = array;
*/
char *temp;
for(i = 1; i <= m-1; i++)
for(j = 1; j <= m-i; j++)
if( (*(rowptr + j-1))[n-1] < (*(rowptr + j))[n-1])
{
swap_string(string[j-1], string[j]);
}
/*
*/
print_list(char *string[ ],
int array [] [SUBJECTS + 1],
int m,
int n)
{
int i, j, (*rowptr)[SUBJECTS+1] = array;
for(i = 0; i < m; i++)
{
printf("%-20s", string[i]);
for(j = 0; j < n; j++)
printf("%5d", (*(rowptr + i))[j]);
printf("\n");
}
}
/*
*/
/*
Exchange of strings
*/
swaparea[i] = s1[i];
i++;
}
i = 0;
while(s2[i] != '\0' && i < 256)
{
s1[i] = s2[i];
s1[++i] = '\0';
}
i = 0;
while(swaparea[i] != '\0')
{
s2[i] = swaparea[i];
s2[++i] = '\0';
}
}
Output
Input students names & their marks in four subjects
S.Laxmi 45 67 38 55
V.S.Rao 77 89 56 69
A.Gupta 66 78 98 45
S.Mani 86 72 0 25
R.Daniel 44 55 66 77
S.Laxmi
V.S.Rao
A.Gupta
S.Mani
R.Daniel
45
77
66
86
44
67
89
78
72
55
38
56
98
0
66
55
69
45
25
77
205
291
287
183
242
77
66
44
45
86
89
78
55
67
72
56
98
66
38
0
69
45
77
55
25
291
287
242
205
183
Ranked List
V.S.Rao
A.Gupta
R.Daniel
S.Laxmi
S.Mani
Output
Input increment values: price increment and quantity increment
10 12
Updated values of item
Name
Price
Quantity
: XYZ
: 35.750000
: 24
858.000000