Описать структуру с именем 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("записей не найдено");
}
}
}
}