#include <stdio.h>
#define STUDENTS 3
#define EXAMS 4
int maximum( const int grades[][EXAMS], int pupils, int tests );
int minimum( const int (*grades)[EXAMS], int pupils, int tests );
int main(void)
{
int studentGrades[STUDENTS][EXAMS] = { {77,68,86,73},
{96,87,89,78},
{70,90,86,81} };
printf("maximum : %d\n", maximum
( studentGrades
, STUDENTS
, EXAMS
) ); printf("minimum : %d\n", minimum
( studentGrades
, STUDENTS
, EXAMS
) );
return 0;
}
int maximum( const int grades[][EXAMS], int pupils, int tests )
{
int high_grade = 0;
for(int i=0; i<pupils; i++){
for(int j=0; j<tests; j++){
if(grades[i][j] > high_grade)
high_grade = grades[i][j];
}
}
return high_grade;
}
int minimum( const int (*grades)[EXAMS], int pupils, int tests )
{
int low_grade = 100;
for(int i=0; i<pupils; i++){
for(int j=0; j<tests; j++){
if(grades[i][j] < low_grade)
low_grade = grades[i][j];
}
}
return low_grade;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgU1RVREVOVFMgMwojZGVmaW5lIEVYQU1TIDQKCmludCBtYXhpbXVtKCBjb25zdCBpbnQgZ3JhZGVzW11bRVhBTVNdLCBpbnQgcHVwaWxzLCBpbnQgdGVzdHMgKTsKaW50IG1pbmltdW0oIGNvbnN0IGludCAoKmdyYWRlcylbRVhBTVNdLCBpbnQgcHVwaWxzLCBpbnQgdGVzdHMgKTsKCmludCBtYWluKHZvaWQpCnsKICAgIGludCBzdHVkZW50R3JhZGVzW1NUVURFTlRTXVtFWEFNU10gPSB7IHs3Nyw2OCw4Niw3M30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7OTYsODcsODksNzh9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezcwLDkwLDg2LDgxfSB9OwoKICAgIHByaW50ZigibWF4aW11bSA6ICVkXG4iLCBtYXhpbXVtKCBzdHVkZW50R3JhZGVzLCBTVFVERU5UUywgRVhBTVMgKSApOwogICAgcHJpbnRmKCJtaW5pbXVtIDogJWRcbiIsIG1pbmltdW0oIHN0dWRlbnRHcmFkZXMsIFNUVURFTlRTLCBFWEFNUyApICk7CgogICAgcmV0dXJuIDA7Cn0KCmludCBtYXhpbXVtKCBjb25zdCBpbnQgZ3JhZGVzW11bRVhBTVNdLCBpbnQgcHVwaWxzLCBpbnQgdGVzdHMgKQp7CiAgICBpbnQgaGlnaF9ncmFkZSA9IDA7CgogICAgZm9yKGludCBpPTA7IGk8cHVwaWxzOyBpKyspewogICAgICAgIGZvcihpbnQgaj0wOyBqPHRlc3RzOyBqKyspewogICAgICAgICAgICBpZihncmFkZXNbaV1bal0gPiBoaWdoX2dyYWRlKQogICAgICAgICAgICAgICAgaGlnaF9ncmFkZSA9IGdyYWRlc1tpXVtqXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gaGlnaF9ncmFkZTsKfQoKaW50IG1pbmltdW0oIGNvbnN0IGludCAoKmdyYWRlcylbRVhBTVNdLCBpbnQgcHVwaWxzLCBpbnQgdGVzdHMgKQp7CiAgICBpbnQgbG93X2dyYWRlID0gMTAwOwoKICAgIGZvcihpbnQgaT0wOyBpPHB1cGlsczsgaSsrKXsKICAgICAgICBmb3IoaW50IGo9MDsgajx0ZXN0czsgaisrKXsKICAgICAgICAgICAgaWYoZ3JhZGVzW2ldW2pdIDwgbG93X2dyYWRlKQogICAgICAgICAgICAgICAgbG93X2dyYWRlID0gZ3JhZGVzW2ldW2pdOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBsb3dfZ3JhZGU7Cn0=