public StudentAndNoOfTen[] ReturnStudentsWithMostTenGrades(Student[] students) { var max = CountTheTenGradesFromAStudent(students[0]); StudentAndNoOfTen[] bestStudents = new StudentAndNoOfTen[0]; var counter = -1; for (int i = 1; i < students.Length; i++) { if (max < CountTheTenGradesFromAStudent(students[i])) { max = CountTheTenGradesFromAStudent(students[i]); } } for (int i = 0; i < students.Length; i++) { if (max == CountTheTenGradesFromAStudent(students[i])) { Array.Resize(ref bestStudents, bestStudents.Length + 1); counter++; bestStudents[counter] = new StudentAndNoOfTen(students[i].studentName, max); } } return(bestStudents); }
public void ShouldReturnStudentsWithMostTenGrades() { Student[] students = new Student[] { new Student("Paul", new Material[] { new Material("Math", new int[] { 10, 7 }), new Material("English", new int[] { 7, 10 }), new Material("French", new int[] { 10, 7 }) }), new Student("Raul", new Material[] { new Material("Math", new int[] { 10, 6 }), new Material("English", new int[] { 6, 6 }), new Material("French", new int[] { 6, 10 }) }), new Student("Alin", new Material[] { new Material("Math", new int[] { 10, 8 }), new Material("English", new int[] { 10, 8 }), new Material("French", new int[] { 10, 10 }) }), new Student("Zoro", new Material[] { new Material("Math", new int[] { 10, 6 }), new Material("English", new int[] { 6, 10 }), new Material("French", new int[] { 10, 10 }) }) }; var result = new StudentAndNoOfTen[] { new StudentAndNoOfTen("Alin", 4), new StudentAndNoOfTen("Zoro", 4) }; var function = ReturnStudentsWithMostTenGrades(students); CollectionAssert.AreEqual(result, function); }