Описать структуру с именем STUDENT - C# (210523)

Узнай цену своей работы

Формулировка задачи:

Описать структуру с именем STUDENT, содержащую следующие поля:  фамилия и инициалы;  номер группы;  успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия:  ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT (записи должны быть упорядочены по возрастанию номера группы);  вывод на экран фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4.0 (если таких студентов нет, вывести соответствующее сообщение). Вообщем вот код, но когда ввожу оценку выкидывает исключение, подскажите, что не так
using System;
using System.Collections.Generic;
using System.Text;
 
namespace zadanie_10
{
    class Program
    {
        const int STUDENTS_QUANTITY = 2;
        const int SUBJECT_QUANTITY = 5;
 
        static void Main(string[] args)
        {
            Student[] Results = new Student[STUDENTS_QUANTITY];
 
            GetStudents(Results);
            CheckGoodMark(Results);
            
            Console.ReadKey();
        }
 
        public struct Student
        {
            public string Surname;
            public string Initials;
            public int GroupNumber;
            public int[] Marks;
        }
 
        static void GetStudents(Student[] Students)
        {
            string buf;
            Student student = new Student();
            student.Marks = new int[SUBJECT_QUANTITY];
 
            for (int i = 0; i < STUDENTS_QUANTITY; i++)
            {
                 Console.WriteLine("Введите фамилию студента:");
                student.Surname = Console.ReadLine();
                Console.WriteLine("Введити инициалы студента:");
                student.Initials = Console.ReadLine();
                Console.WriteLine("Введите группу студента:");
                buf = Console.ReadLine();
                student.GroupNumber = Convert.ToInt32(buf);
                Console.WriteLine("Введите оценку студента: ");
                for (int h = 0; h < SUBJECT_QUANTITY; h++)
                {
                    buf = Console.ReadLine();
                    student.Marks[h] = Convert.ToInt32(buf);
                }
                Students[i] = student;
            }
 
            //сортировка
            for (int h = STUDENTS_QUANTITY - 1; h > 0; h--)
            {
                for (int s = 0; s < h; s++)
                {
                    if (Students[s].GroupNumber > Students[s + 1].GroupNumber)
                    {
                        int tmp1 = Students[s].GroupNumber;
                        string tmp2 = Students[s].Surname;
                        string tmp3 = Students[s].Initials;
                        int[] tmp4 = Students[s].Marks;
 
                        Students[s].GroupNumber = Students[s + 1].GroupNumber;
                        Students[s].Surname = Students[s + 1].Surname;
                        Students[s].Initials = Students[s + 1].Initials;
                        Students[s].Marks = Students[s + 1].Marks;
 
                        Students[s + 1].GroupNumber = tmp1;
                        Students[s + 1].Surname = tmp2;
                        Students[s + 1].Initials = tmp3;
                        Students[s + 1].Marks = tmp4;
                    }
                }
            }
        }
 
        static void CheckGoodMark(Student[] Students)
        {
            bool found = false;
            int summa = 0;
            float aver = 0;
 
            for (int i = 0; i < STUDENTS_QUANTITY; i++)
            {
                for (int j = 0; j < SUBJECT_QUANTITY; j++)
                    summa += Students[i].Marks[j];
 
                aver = summa/5;
 
                if (aver >= 4.0)
                {
                        found = true;
                        Console.Write("Студент " + Students[i].Surname + " " + Students[i].Initials);
                        Console.Write(" из группы N" + Students[i].GroupNumber);
                        Console.WriteLine(" имеет средний бал больше 4,0");
                }
                aver = 0;
                summa = 0;
            }
            if (!found)
            {
                Console.WriteLine("записей не найдено");
            }
        }
    }
}

Решение задачи: «Описать структуру с именем STUDENT»

textual
Листинг программы
using System;
using System.Linq;
 
namespace zadanie_10
{
    class Program
    {
        const int STUDENTS_QUANTITY = 3;
        const int SUBJECT_QUANTITY = 5;
 
        static void Main(string[] args)
        {
            Student[] Results = new Student[STUDENTS_QUANTITY];
 
            GetStudents(Results);
            CheckGoodMark(Results);
 
            Console.ReadKey();
        }
 
        public struct Student
        {
            public string Surname;
            public string Initials;
            public int GroupNumber;
            public int[] Marks;
        }
 
        static void GetStudents(Student[] Students)
        {
            int number;
            bool converted;
            Student student = new Student();
            student.Marks = new int[SUBJECT_QUANTITY];
 
            for (int i = 0; i < STUDENTS_QUANTITY; i++)
            {
                Console.WriteLine("Введите фамилию студента:");
                student.Surname = Console.ReadLine();
                Console.WriteLine("Введити инициалы студента:");
                student.Initials = Console.ReadLine();
                
                do
                {
                    Console.WriteLine("Введите группу студента:");
                    converted = int.TryParse(Console.ReadLine(), out number);
                }
                while (converted == false);
                student.GroupNumber = number;
 
                Console.WriteLine("Введите оценки студента (всего {0}):", SUBJECT_QUANTITY);
                for (int h = 0; h < SUBJECT_QUANTITY; h++)
                {
                    do
                    {
                        Console.Write("{0}) ", h + 1);
                        converted = int.TryParse(Console.ReadLine(), out number);
                    }
                    while (converted == false);
                    student.Marks[h] = number;
                }
                Students[i] = student;
                Console.WriteLine();
            }
 
            //сортировка
            Array.Sort(Students, (x, y) => x.GroupNumber == y.GroupNumber ? 0 : x.GroupNumber > y.GroupNumber ? 1 : -1);
        }
 
        static void CheckGoodMark(Student[] Students)
        {
            bool found = false;
 
            foreach (Student student in Students)
            {
                if (student.Marks.Average() >= 4.0)
                {
                    found = true;
                    Console.WriteLine("Студент {0} {1} из группы N{2} имеет средний бал больше 4,0", 
                        student.Surname, student.Initials, student.GroupNumber);
                }
            }
 
            if (!found)
            {
                Console.WriteLine("записей не найдено");
            }
        }
 
    }
}

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


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

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

11   голосов , оценка 3.727 из 5