C# Работа с структурами

198
11 апреля 2018, 06:50

Задание:

  1. Объявите структуру Entrant, которая представляет собой информацию о абитуриенте и содержит такие открытые поля:

    • Name – Фамилию и инициалы ;
    • IdNum – номер абитуриента;
    • CoursePoints – балы за подготовительные курсы;
    • AvgPoints – бал аттестата;
    • ZNOResults – массив структур типа ZNO;
  2. Объявите структуру ZNO, которая содержит открытые поля:

    • Subject – название предмета;
    • Points – результат.
  3. Для каждой структуры сделать конструкторы.

  4. В структуру Entrant добавить методы (не статические):

    • GetCompMark(), который считает конкурсный бал абитуриента. Если он писал меньше 3 предметов возвращать 0, если больше, то считать только первые три
    • GetBestSubject(), что возвращает название предмета который студент написал лучше всех ;
    • GetWorstSubject() - хуже всех.
  5. В классе Program предусмотреть статические методы:

    • ReadEntrantsArray() – читает с клавиатуры массив структур (n штук) и возвращает массив структур типа Entrant;
    • PrintEntrant() – принимает структуру типа Entrant и выводит на экран;

Вот именно что у меня не получается: я не уверен правильно ли я объявил это все дело. С методами беда, ибо примеров использования вложенного массива структур я нигде не нашел. Вот сам код:

namespace StructConlsole
{
    class Program
    {
        public static void ReadEnterantsArray(int n)
        {
            int re = 0;
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine($"Введіть прізвище та ініціали {i} абітурієнта =");
                enterants[i].name = Console.ReadLine();
                Console.WriteLine($"Введіть ідентифікаційний код {i} абітурієнта =");
                if (!int.TryParse(Console.ReadLine(), out enterants[i].idNum))
                {
                    Console.WriteLine("Помилка введення значення. Будь-ласка повторіть введення значення ще раз!");
                }
                Console.WriteLine("Введіть бали за підготовчі курси =");
                if (!int.TryParse(Console.ReadLine(), out enterants[i].coursePoints))
                {
                    Console.WriteLine("Помилка введення значення. Будь-ласка повторіть введення значення ще раз!");
                }
                Console.WriteLine("Введіть бал атестату =");
                if (!int.TryParse(Console.ReadLine(), out enterants[i].avgPoints))
                {
                    Console.WriteLine("Помилка введення значення. Будь-ласка повторіть введення значення ще раз!");
                }
                Console.WriteLine("Кількість предметів ЗНО =");
                if (!int.TryParse(Console.ReadLine(), out results[i].kpred))
                {
                    Console.WriteLine("Помилка введення значення. Будь-ласка повторіть введення значення ще раз!");
                }
                for (int j = 0; j < results[i].kpred; j++)
                {
                    Console.WriteLine("Введіть назву предмета =");
                    results[re].subject = Console.ReadLine();
                    Console.WriteLine("Введіть результат =");
                    if (!int.TryParse(Console.ReadLine(), out results[re].points))
                    {
                        Console.WriteLine("Помилка введення значення. Будь-ласка повторіть введення значення ще раз!");
                    }
                    re++;
                }
            }
        }
        static void Main(string[] args)
        {
            System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)
                        System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
            customCulture.NumberFormat.NumberDecimalSeparator = ".";
            System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
            Console.OutputEncoding = Encoding.Unicode;
            Console.InputEncoding = Encoding.Unicode;
            Console.WriteLine("Введіть кількість абітурієнтів =");
            if (!int.TryParse(Console.ReadLine(), out int n))
            {
                Console.WriteLine("Помилка введення значення. Будь-ласка повторіть введення значення ще раз!");
            }
            ReadEnterantsArray(n);
            PrintEntrant(n);
            Console.ReadKey();
        }
        public static Entrant[] enterants = new Entrant[100];
        public static ZNO[] results = new ZNO[100];
        public static void PrintEntrant(int n)
        {
            int ra = 0;
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine($"Абітурієнт №{i} ---{enterants[i].name}" +
                    $"Індифікаційний код абітурієнта--- {enterants[i].idNum}" +
                    $"Набрав {enterants[i].coursePoints} балів за підготовчі курси" +
                    $"Бал його атестату --- {enterants[i].avgPoints}");
                for ( int j=0; j < results[i].kpred; j++)
                {
                    Console.WriteLine($"Набрав {results[ra].points} " +
                        $"балів з предмету {results[ra].subject}");
                    ra++;
                }
            }
        }
        public static void SortEntrantsByPoints(int n)
        {
        }
        public struct Entrant
        {
            public string name;
            public int idNum;
            public int coursePoints;
            public int avgPoints;
            public ZNO[] ZNOResults;
            public int compMark;
            public Entrant(string na, int i, int c, int a, ZNO[] j,int cm)
            {
                name = na;
                idNum = i;
                coursePoints = c;
                avgPoints = a;
                ZNOResults = j;
                compMark = cm;
            }
            public Entrant(ZNO[] j)
            {
                name = "Anon";
                idNum = 228;
                coursePoints = 1337;
                avgPoints = 228;
                ZNOResults = j;
                compMark = 2;
            }
        }
        public struct ZNO
        {
            public string subject;
            public int points;
            public int kpred;
            public ZNO(string sub, int p, int k)
            {
                subject = sub;
                points = p;
                kpred = k;
            }
            public ZNO(string sub)
            {
                subject = "Dont know";
                points = 3;
                kpred = 1;
            }
        }
    }
READ ALSO
Excel не выводить уведомления при замене

Excel не выводить уведомления при замене

Для замены текста использую

186
Алгоритм FOREL на C#

Алгоритм FOREL на C#

Не могу сделать Forel (именно первая) на C#Есть ли у кого готовые реализации? Облазил весь интернет, но так ничего и не нашел

519
Правильный парсинг с помощью C#

Правильный парсинг с помощью C#

Всем приветЗадался целью написать парсер, который бы получал текст с этой страницы: https://litnet

162