Опредение среднего балла по данным из файла - 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
Листинг программы
  1. using System;
  2. using System.Linq;
  3. using System.IO;
  4.  
  5. namespace ConsoleApp4
  6. {
  7.     class Program
  8.     {
  9.         struct Ball
  10.         {
  11.             public string FIO;
  12.             public int math, phys, inf;
  13.             public double ave;
  14.         }
  15.  
  16.         static void exit()
  17.         {
  18.             Console.Write("Оценки должны быть < 5!\nНажмите любую клавишу...");
  19.             Console.ReadKey(true);
  20.             Environment.Exit(1);
  21.         }
  22.  
  23.         static void Main(string[] args)
  24.         {
  25.             string path = @"E:\in.txt", pathout = @"E:\out.txt";
  26.             string[][] a = File.ReadLines(path).Select(v => v.Split(' ').ToArray()).ToArray();
  27.             Ball[] b = new Ball[a.GetLength(0)];
  28.             for (int i = 0; i < b.Length; i++)
  29.             {
  30.                 b[i].FIO = a[i][0] + ' ' + a[i][1];
  31.                 if (int.TryParse(a[i][2], out b[i].math))
  32.                     if (b[i].math > 5)
  33.                         exit();
  34.                 if (int.TryParse(a[i][3], out b[i].phys))
  35.                     if (b[i].phys > 5)
  36.                         exit();
  37.                 if (int.TryParse(a[i][4], out b[i].inf))
  38.                     if (b[i].inf > 5)
  39.                         exit();
  40.                 b[i].ave = (double)(b[i].inf + b[i].math + b[i].phys) / 3;
  41.             }
  42.  
  43.             File.AppendAllText(pathout, "Не имеющие троек:" + Environment.NewLine);
  44.             for (int i = 0; i < b.Length; i++)
  45.             {
  46.                 int[] ave1 = { b[i].math, b[i].inf, b[i].phys };
  47.                 if (ave1.Average() > 3)
  48.                     File.AppendAllText(pathout, b[i].FIO + Environment.NewLine);
  49.             }
  50.  
  51.             File.AppendAllText(pathout, Environment.NewLine + $"Ср. математика: {b.Select(v => v.math).Average()}; " +
  52.                 $"Ср. физика: {b.Select(v => v.phys).Average()}; Ср. информатика: {b.Select(v => v.inf).Average()}" + Environment.NewLine);
  53.  
  54.             File.AppendAllText(pathout, Environment.NewLine + "Максимальный средний балл имеет(ют):");
  55.             for (int i = 0; i < b.Length; i++)
  56.                 if (b[i].ave == b.Select(v => v.ave).Max())
  57.                     File.AppendAllText(pathout,Environment.NewLine + b[i].FIO);
  58.  
  59.             File.AppendAllText(pathout, Environment.NewLine + Environment.NewLine + "В порядке убывания среднего балла:" +
  60.                 Environment.NewLine + String.Join(Environment.NewLine, b.OrderByDescending(v => v.ave).Select(v => v.FIO)));
  61.         }
  62.     }
  63. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы