#include <stdio.h>
#define STUDENTS 3
#define EXAMS 4

// 7.24
void printArray(int grades[][EXAMS], int students, int exams);
void minimum(int grades[][EXAMS], int students, int exams);
void maximum(int grades[][EXAMS], int students, int exams);
void average(int grades[][EXAMS], int students, int exams);


int main(void)
{
	int studentGrade[STUDENTS][EXAMS] =
	{{77, 68, 86, 98},
	 {75, 78, 96, 68},
	 {84, 89, 77, 80}};
	
	void (*processGrade[4])(int[][EXAMS], int, int) = { printArray, minimum, maximum, average };

	printf("%s", " 0  Print the array of grades \n1  Find the minimum grade\n2  Find the maximum grade\n3  Print the average on all tests for each student\n4  End program\n");
	int choise;
	scanf("%d", &choise);
	while (choise >= 0 && choise < 4)
	{
		(*processGrade[choise])(studentGrade, STUDENTS, EXAMS);

		printf("%s", " 0  Print the array of grades \n1  Find the minimum grade\n2  Find the maximum grade\n3  Print the average on all tests for each student\n4  End program\n");
		scanf("%d", &choise);
	}
	printArray(studentGrade, STUDENTS, EXAMS);
	minimum(studentGrade, STUDENTS, EXAMS);
	maximum(studentGrade, STUDENTS, EXAMS);
	average(studentGrade, STUDENTS, EXAMS);
	  
}
void printArray(int grades[][EXAMS], int students, int exams)
{
	printf("%s", "                [0]  [1]  [2]  [3]");
	for (int i = 0; i < students; i++)
	{
		printf("\nStudentGrade[%d] ", i);

		for (int j = 0; j < exams; j++)
		{
			printf("%-5d", grades[i][j]);

		}
	}
}

void minimum(int grades[][EXAMS], int students, int exams)
{
	int min = grades[0][0];

	for (int i = 0; i < students; i++)
	{
		for (int j = 0; j < exams; j++)
		{
			if (grades[i][j] < min)
			{
				min = grades[i][j];
			}
		}
	}
	printf("\nLOwer grade: %d\n", min);
}

void maximum(int grades[][EXAMS], int students, int exams)
{
	int max = grades[0][0];

	for (int i = 0; i < students; i++)
	{
		for (int j = 0; j < exams; j++)
		{
			if (grades[i][j] > max)
			{
				max = grades[i][j];
			}
		}
	}
	printf("Highest grade: %d\n", max);
}

void average(int grades[][EXAMS], int students, int exams)
{
	int sum = 0;
	double aver;

	for (int i = 0; i < students; i++)
	{
		for (int j = 0; j < exams; j++)
		{
			sum += grades[i][j];
		}

		aver = sum / 4.0;
		printf("the average grade for student %d is %f\n", (i+1), aver);
	}

	
}