Вывести список студентов в порядке убывания - C#
Формулировка задачи:
Добрый вечер. Ребята, помогите отсортировать считанный список.
В файл нужно вывести фамилию и имя студента в порядке убывания их среднего балла.
Очень нужно. Спасибо за внимание)
Пример файла IN:
Листинг программы
- 4
- Ivanov Vasiliy 5 3 4
- Petrov Sergey 4 3 5
- Konstantinov Nikolay 5 5 5
- Kuznetsov Ivan 5 4 4
Листинг программы
- using System;
- using System.IO;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace New_3
- {
- class Student
- {
- public string surname;
- public string name;
- public byte phys;
- public byte mat;
- public byte info;
- public Student()
- {
- surname = null;
- name = null;
- phys = 0;
- mat = 0;
- info = 0;
- }
- public Student(string surname, string name, byte mat, byte phys, byte info)
- {
- this.surname = surname;
- this.name = name;
- this.mat = mat;
- this.phys = phys;
- this.info = info;
- }
- public string Output()
- {
- return string.Format("{0} {1} {3} {4}", surname, name, mat, phys, info);
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- StreamReader input = new StreamReader("C:/IN.txt");
- byte n = byte.Parse(input.ReadLine());
- Console.WriteLine(n);
- Student[] students = new Student[n];
- string buf = null;
- string[] bufsplit;
- for (int i = 0; i < n; i++)
- {
- buf = input.ReadLine();
- bufsplit = buf.Split(' ');
- students[i] = new Student(bufsplit[0], bufsplit[1], byte.Parse(bufsplit[2]), byte.Parse(bufsplit[3]), byte.Parse(bufsplit[4]));
- Console.WriteLine("{0} {1}", i + 1, students[i].Output());
- }
- Console.WriteLine("Файл считан");
- StreamWriter output = new StreamWriter("C:/OUT.txt");
- //блок обработки считанных данных
- output.Close();
- input.Close();
- }
- }
- }
Решение задачи: «Вывести список студентов в порядке убывания»
textual
Листинг программы
- using System.IO;
- using System.Linq;
- class Class13
- {
- static void Main()
- {
- var t = File.ReadLines("in.txt").Skip(1).Select(n =>
- {
- var strings = n.Split();
- int phys = int.Parse(strings[2]),
- mat = int.Parse(strings[3]),
- info = int.Parse(strings[4]);
- return
- new
- {
- surname = strings[0],
- name = strings[1],
- average = ((double)phys + mat + info) / 3
- };
- }).OrderByDescending(n => n.average).Select(n => n.surname + " " + n.name);
- File.WriteAllLines("result.txt", t);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д