#include <stdio.h>
#define STUDENTS 3
#define EXAMS 4
int minimum(const int grades[][EXAMS], size_t pupils, size_t tests);
int maximum(const int grades[][EXAMS], size_t pupils, size_t tests);
double average(const int setOfGrades[], size_t tests);
void printArray(const int grades[][EXAMS], size_t pupils, size_t tests);
int main(void)
{
int studentGrades[STUDENTS][EXAMS] =
{ { 77, 68, 86, 73 },
{ 96, 87, 89, 78 },
{ 70, 90, 86, 81 } };
puts("The array is:");
printArray(studentGrades, STUDENTS, EXAMS);
for(int i=0;i<STUDENTS;i++){
printf("\n\nThe student [%d]'s Lowest grade: %d\nThe student [%d]'s Highest grade: %d\n",i,
minimum(studentGrades, i, EXAMS),i,
maximum(studentGrades, i, EXAMS));
}
puts("");
int examgrades[4][3];
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
examgrades[j][i]=studentGrades[i][j];
}
}
for (size_t exam = 0; exam < EXAMS; ++exam) {
printf("The average grade for exam %u is %.2f\n",
exam, average(examgrades[exam], STUDENTS));
}
}
int minimum(const int grades[][EXAMS], size_t pupils, size_t tests)
{
int lowGrade = 100;
for (size_t j = 0; j < tests; ++j) {
if (grades[pupils][j] < lowGrade) {
lowGrade = grades[pupils][j];
}
}
return lowGrade;
}
int maximum(const int grades[][EXAMS], size_t pupils, size_t tests)
{
int highGrade = 0;
for (size_t j = 0; j < tests; ++j) {
if (grades[pupils][j] > highGrade) {
highGrade = grades[pupils][j];
}
}
return highGrade;
}
double average(const int setOfGrades[], size_t tests)
{
int total = 0;
for (size_t i = 0; i < tests; ++i) {
total += setOfGrades[i];
}
return (double) total / tests;
}
void printArray(const int grades[][EXAMS], size_t pupils, size_t tests)
{
printf("%s", " [0] [1] [2] [3]");
for (size_t i = 0; i < pupils; ++i) {
printf("\nstudentGrades[%u] ", i);
for (size_t j = 0; j < tests; ++j) {
printf("%-5d", grades[i][j]);
}
}
}