Сортировка файла по снижению среднего бала студентов - C#
Формулировка задачи:
Задача.
1) Создать файл с полями Фамилия и оценки. Узнать средний бал успеваемости каждого студента.
2) Создать второй файл: Фамилия и средний бал. Отсортировать файл по снижению среднего бала студентов.
С пунктом №1 справился.
Вот как сортировку сделать? Есть ли идеи?
Пример.
Студент3 средний бал = 5.0
Студент1 средний бал = 4.5
Студент2 средний бал = 4.0
Решение задачи: «Сортировка файла по снижению среднего бала студентов»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Курсовий_проект_проба_пера_
{
public class ReverseComparer : IComparer<string>
{
public int Compare(string x, string y)
{
// Compare y and x in reverse order.
return y.CompareTo(x);
}
}
class Program
{
static void Main(string[] args)
{
int i, n;
int t1 = 3;
int t2 = 3;
string student2;
string studentName;
var StudentMarks = new StreamWriter("StudentsMarks.txt");
var StudentSort = new StreamWriter("StudentsSort.txt");
Console.WriteLine("\t{0}", "Введiть прiзвище студента");
string[,] Stud = new string[t1 + 1, t2 + 1];
string[,] StudSort = new string[t1 + 1, t2 + 1];
for (i = 0; i < t1; i++) //лiчильник для прiзвищ
{
double Sum = 0;
n = i + 1; //нумерацiя з одинички
Console.Write("Студент №" + n + " ");
Stud[i, 0] = Console.ReadLine();
StudentMarks.Write(Stud[i, 0] + " - Оцiнки ", true);
for (int p = 1; p < t2; p++) //лiчильник для оцiнок
{
if (p == 1)
{
Console.Write(" Оцiнка за предмет Математика ");
}
if (p == 2)
{
Console.Write(" Оцiнка за предмет Програмування ");
}
Stud[i, p] = Console.ReadLine();
double Sum1 = Convert.ToDouble(Stud[i, p]);
Sum = Sum + Sum1;
StudentMarks.Write(Stud[i, p] + ", ", true);
}
Stud[i, 3] = Convert.ToString(Sum / 2);
StudentMarks.Write("Середнiй бал = " + Stud[i, 3], true);
StudentMarks.WriteLine();
}
string[] Student1 = new string[t1];
string[] Stud2 = new string[t1];
string[] StudentName1 = new string[t1];
for (i = 0; i < t1; i++)
{
student2 = null;
studentName = null;
student2 = Convert.ToString(Stud[i, 3]);
studentName = Convert.ToString(Stud[i, 0]);
StudentName1[i] = studentName;
Student1[i] = student2;
Stud2[i] = Student1[i];
}
ReverseComparer rc = new ReverseComparer();
Console.WriteLine();
Console.WriteLine("\nСортування");
Array.Sort(Student1, rc);
for (i = 0; i < t1; i++)
{
int indexMark = Array.IndexOf(Stud2, Student1[i]);
string Name = StudentName1[indexMark];
Console.WriteLine( Name+ "Середній бал = " + Student1[i]);
StudentSort.WriteLine("Студент " + Name + " середній бал = " + Student1[i], true);
}
StudentMarks.Close();
StudentSort.Close();
Console.ReadKey();
}
}
}