Опредение среднего балла по данным из файла - 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)));
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д