Описать структуру с именем 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("записей не найдено"); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д