Опредение среднего балла по данным из файла - C#
Формулировка задачи:
Дан текстовый файл (in.txt) содержащий список учащихся и их оценки по трем
предметам: математике, физике, информатике.
Формат файла: сначала количество учащихся n, затем n строк, каждая из которых
содержит фамилию, имя и три числа. Данные в строке разделены одним пробелом.
Оценки принимают значение от 1 до 5.
Пример входного файла:
4
Ivanov Vasiliy 4 3 4
Petrov Sergey 5 3 5
Konstantinov Nikolay 4 4 5
Kuznetsov Ivan 5 5 5
I Определите средний балл каждого из учащихся. Выведите в файл out.txt фамилии и
имена учащихся, не имеющих троек (а также двоек и колов).
II Выведите три действительных числа: средний балл всех учащихся по математике,
по физике, по информатике. Определите учащихся с наилучшей успеваемостью, то есть с
максимальным средним баллом по трем предметам. Выведите в файл out.txt одного или
нескольких учащихся, имеющих максимальный средний балл.
III Выведите в файл out.txt фамилии и имена учащихся в порядке убывания их
среднего балла.
Помогите пожалуйста
Решение задачи: «Опредение среднего балла по данным из файла»
textual
Листинг программы
using System; using System.Linq; using System.IO; namespace ConsoleApp4 { class Program { struct Ball { public string FIO; public int math, phys, inf; public double ave; } static void exit() { Console.Write("Оценки должны быть < 5!\nНажмите любую клавишу..."); Console.ReadKey(true); Environment.Exit(1); } static void Main(string[] args) { string path = @"E:\in.txt", pathout = @"E:\out.txt"; string[][] a = File.ReadLines(path).Select(v => v.Split(' ').ToArray()).ToArray(); Ball[] b = new Ball[a.GetLength(0)]; for (int i = 0; i < b.Length; i++) { b[i].FIO = a[i][0] + ' ' + a[i][1]; if (int.TryParse(a[i][2], out b[i].math)) if (b[i].math > 5) exit(); if (int.TryParse(a[i][3], out b[i].phys)) if (b[i].phys > 5) exit(); if (int.TryParse(a[i][4], out b[i].inf)) if (b[i].inf > 5) exit(); b[i].ave = (double)(b[i].inf + b[i].math + b[i].phys) / 3; } File.AppendAllText(pathout, "Не имеющие троек:" + Environment.NewLine); for (int i = 0; i < b.Length; i++) { int[] ave1 = { b[i].math, b[i].inf, b[i].phys }; if (ave1.Average() > 3) File.AppendAllText(pathout, b[i].FIO + Environment.NewLine); } File.AppendAllText(pathout, Environment.NewLine + $"Ср. математика: {b.Select(v => v.math).Average()}; " + $"Ср. физика: {b.Select(v => v.phys).Average()}; Ср. информатика: {b.Select(v => v.inf).Average()}" + Environment.NewLine); File.AppendAllText(pathout, Environment.NewLine + "Максимальный средний балл имеет(ют):"); for (int i = 0; i < b.Length; i++) if (b[i].ave == b.Select(v => v.ave).Max()) File.AppendAllText(pathout,Environment.NewLine + b[i].FIO); File.AppendAllText(pathout, Environment.NewLine + Environment.NewLine + "В порядке убывания среднего балла:" + Environment.NewLine + String.Join(Environment.NewLine, b.OrderByDescending(v => v.ave).Select(v => v.FIO))); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д