/// <summary> /// ShowGradeReport - This will display grades and feedback as well as count, average, number of passes, number of fails /// </summary> public static void ShowGradeReport(double[] marks, PercentToFeedback feedback) { GradeStats stats; int count = CalculateGradeStats(marks, out stats); for (int student = 0; student < marks.Length; student++) { Console.WriteLine("Student {0}: {1,5:n1}% : {2}", student + 1, marks[student], feedback(marks[student])); } Console.WriteLine("\nCount: {0, 5:n1}", count); Console.WriteLine("Passed: {0, 5:n1}", stats.passCount); Console.WriteLine("Failed: {0, 5:n1}", stats.failCount); Console.WriteLine("Invalid: {0, 5:n1}", stats.invalidCount); Console.WriteLine("Average: {0, 5:n1}%\n", stats.averageGrade); }
/// <summary> /// PercentToFeedback - This will be used as a reference to either PercentToGrade() or PercentToDescription() /// </summary> static void Main(string[] args) { const int NUMBER_OF_GRADES = 5; double[] grades = new double[NUMBER_OF_GRADES]; string userInput = ""; for (int student = 0; student < grades.Length;) { try { Console.Write("\nEnter a grade for student {0}: ", student + 1); userInput = Console.ReadLine(); grades[student] = Convert.ToDouble(userInput); student++; } catch (FormatException) { Console.WriteLine("Sorry, I could not convert \"{0}\" into a numeric value. Please try again", userInput); } catch (Exception) { Console.WriteLine("Sorry, an error occured. Please try again."); } } PercentToFeedback feedbackMethod = PercentToLetterGrade; try { if (args[0].ToLower() == "description") { feedbackMethod = PercentToLetterGrade; } // feedbackMethod = PercentToDescription; } catch (Exception) { } Console.WriteLine("\n"); ShowGradeReport(grades, feedbackMethod); Console.WriteLine("\nPress any key to end..."); Console.ReadKey(); }