using System.Collections.Generic;
using System.Threading.Tasks;
namespace StudentGradeTracker
static void Main(string[] args)
Console.WriteLine($"\nMain Menu\n=====================\n1) Initialize Student Data\n2) Input Grades\n3) Calculate Subject Statistics\n4) Display Grades\n5) Exit\n");
} while (!int.TryParse(Console.ReadLine(), out mode) || mode < 1 || mode > 5);
Console.WriteLine("===================\n");
Console.Write("Enter number of students: ");
} while (!int.TryParse(Console.ReadLine(), out rows) || rows < 1);
Console.Write("Enter number of subjects: ");
} while (!int.TryParse(Console.ReadLine(), out cols) || cols < 1);
grades = new int[rows, cols];
Console.WriteLine("Intitialize student data first");
for (int i = 0; i < grades.GetLength(0); i++)
for (int j = 0; j < grades.GetLength(1); j++)
Console.Write($"Enter student {i + 1} subject {j + 1} grade: ");
} while (!int.TryParse(Console.ReadLine(), out grade) || grade < 0 || grade > 100);
Console.WriteLine("Intitialize student data first");
for (int i = 1; i <= grades.GetLength(1); i++)
Console.WriteLine($"=============\nSubject {i}");
printSubjectStuff(grades, i - 1);
Console.WriteLine("===============\n");
Console.WriteLine("Intitialize student data first");
for (int i = 0; i < grades.GetLength(1); i++)
Console.Write($"Subject {i + 1} ");
for (int i = 0; i < grades.GetLength(0); i++)
Console.Write($"Student {i + 1}");
for (int j = 0; j < grades.GetLength(1); j++)
Console.Write($"{grades[i, j],12:F0}");
public static void printSubjectStuff(int[,] grades, int col)
Console.WriteLine($"\nMin: {getSubjectExtreme(grades, true, col)}\nMax: {getSubjectExtreme(grades, false, col)}\nAverage: {getSubjectAverage(grades, col),0:F2}");
public static double getSubjectAverage(int[,] array, int col)
for (int i = 0; i < array.GetLength(0); i++)
return sum / array.GetLength(0);
public static int getSubjectExtreme(int[,] array, bool min, int col)
int direction = (min? 1:-1);
int extreme = array[0,col];
for (int i = 0; i < array.GetLength(0); i++)
if (array[i,col] * direction < extreme * direction)