Сортировка в структуре c#

99
26 августа 2021, 03:00

Нужно упорядочить записи по возрастанию номера группа с помощью интерфейса IComparer, а также сделать добавление данных в массив без ввода с клавиатуры. Я сделал такую сортировку, не знаю как с помощью IComparer

Весь код

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace Students
{
        struct Student : IComparer<Student>
        {
            public string student_name;
            public int group_number;
            public int[] Marks;
        public int Compare(Student x, Student y)
        {
            if (x.group_number > y.group_number)
                return 1;
            else if (x.group_number < y.group_number)
                return -1;
            else
                return 1;
        }
        public Student(string student_name, int group_number, int[] Marks)
            {
                this.student_name = student_name;
                this.group_number = group_number;
                this.Marks = Marks;
            }
            public double MediumBall()
            {
            double MedBall = 0;
            foreach (int i in Marks)
            {
                MedBall += i;
            }
            MedBall /= Marks.Length;
            return MedBall;
            }
            public override string ToString()
            {
                return string.Format("ФИО: {0} \nНомер группы: {1}", student_name, group_number);
            } 
        }
        class Program
        {
            static void Main(string[] args)
            {
                int n = 0;
                Console.Write("Введите количество студентов: ");
                n = int.Parse(Console.ReadLine());
                Student[] students = new Student[n];
                for (int i = 0; i < n; i++)
                {
                    Console.Write("Введите фамилию и инициалы {0}-ого студента: ", i + 1);
                    string name = Console.ReadLine();
                    Console.Write("Введите номер группы {0}-ого студента: ", i + 1);
                    int number = int.Parse(Console.ReadLine());
                    Console.Write("Введите 5 оценок {0}-ого студента: ", i + 1);
                    string[] marks = Console.ReadLine().Split(' ');
                    Console.Write("\n");
                    int[] Marks = new int[5];
                    for (int a = 0; a < 5; a++)
                        Marks[a] = int.Parse(marks[a].ToString());
                    students[i] = new Student(name, number, Marks);
                }
            //var stud = from i in students orderby i.group_number select i; 
            Console.WriteLine("\n\nУпорядоченный по номеру группы массив студентов: ");
            Array.Sort(students, new Student());
            foreach (Student p in students)
            {
                Console.WriteLine("\n" + students );
            }

            int count = 0;
                foreach (Student mark in students)
                    if (mark.MediumBall() > 4)
                    {
                        count++;
                    }

                if (count == 0)
                    Console.WriteLine("\nCтуденты со средним баллом больше 4 отсутствуют.");
                else
                    Console.WriteLine("\nСписок студентов со средним баллом больше 4: ");
                foreach (Student student in students)
                    if (student.MediumBall() >= 4)
                    Console.WriteLine("\n" + student.ToString());
                Console.ReadKey();
            }
        }
}
READ ALSO
Распознавание лиц Emgu c#

Распознавание лиц Emgu c#

Программа обнаружает лица и распознает имена через текстовый файлНо если появляется лицо, имени которого нет в файле, то он берет имя первого...

83
Многопоточная обработка блоков данных

Многопоточная обработка блоков данных

Прошу помощи в разборе проблемыЯ использую 2 экземпляра класса который реализует идею паттерна поставщик/потребитель

91
Получение массива по запросу Mysql

Получение массива по запросу Mysql

Я выполняю запрос MySql, где получаю столбец Id с несколькими значениямиКак я могу получить все эти значения Int массивом?

100