private static void ParsePupilLine(string line, ref Pupil pupil) { string[] lineArray = line.Split(new char[] { ' ' }); if (5 != lineArray.Length) { throw new PupilAccountException("Неверный формат записи ученика."); } if (lineArray[0].Length > 20 || lineArray[1].Length > 15) { throw new PupilAccountException("Дина имени ученика не должно " + "превышать 15 символов, а длина фамилии - 20 символов."); } pupil = new Pupil(); pupil.Surname = lineArray[0]; pupil.Name = lineArray[1]; pupil.Estimate1 = int.Parse(lineArray[2]); pupil.Estimate2 = int.Parse(lineArray[3]); pupil.Estimate3 = int.Parse(lineArray[4]); }
public static Pupil[] ReadPupiles(string filename) { try { Pupil[] pupilArray = null; using (StreamReader sr = new StreamReader(filename)) { int pupilCount = int.Parse(sr.ReadLine()); pupilArray = new Pupil[pupilCount]; for (int i = 0; i < pupilCount; ++i) { string line = sr.ReadLine(); ParsePupilLine(line, ref pupilArray[i]); } } return(pupilArray); } catch (Exception ex) { throw new PupilAccountException( "Ошибка при считывании учеников из файла. ", ex); } }
//На вход программе подаются сведения о сдаче экзаменов учениками 9-х //классов некоторой средней школы.В первой строке сообщается количество //учеников N, которое не меньше 10, но не превосходит //100, каждая из следующих N строк имеет следующий формат: //<Фамилия> <Имя> <оценки>, //где<Фамилия> – строка, состоящая не более чем из 20 символов, <Имя> – строка, //состоящая не более чем из 15 символов, <оценки> – через пробел //три целых числа, соответствующие оценкам по пятибалльной системе. //<Фамилия> и<Имя>, а также<Имя> и<оценки> разделены одним пробелом. Пример входной строки: //Иванов Петр 4 5 3 //Требуется написать как можно более эффективную программу, //которая будет выводить на экран фамилии и имена трех //худших по среднему баллу учеников. Если среди остальных //есть ученики, набравшие тот же средний балл, что и один из трех худших, то следует вывести и их фамилии и имена. static void Main(string[] args) { string[] rawData = Input.LoadDataFromFile("..\\Pupils.txt"); Console.WriteLine($"В файле содержаться данные на {rawData[0]} учеников"); Pupil[] pupils = Pupil.ListPupils(rawData); int i = 1; //список учеников, если нужен //foreach (var p in pupils) //{ // Console.WriteLine($"Ученик {i} {p.Name} {p.Surename} средний бал {p.Average}"); // i++; //} //Сортирую учеников PupilBuble(pupils); Console.WriteLine("\n"); Console.WriteLine("Вывод трёх самых худших по среднему баллу учеников:"); for (i = 0; i < 3; i++) { Console.WriteLine($"Ученик {i}\t {pupils[i].Name} {pupils[i].Surename} средний бал {pupils[i].Average}"); } Console.WriteLine("\nДругие ученики с таким же средним баллом"); i = 3; while (pupils[i].Average == pupils[2].Average) { Console.WriteLine($"Ученик {i}\t {pupils[i].Name} {pupils[i].Surename} средний бал {pupils[i].Average}"); i++; } Console.ReadKey(); }