Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
NeoX_2011
1 / 1 / 1
Регистрация: 19.11.2011
Сообщений: 35
#1

Описать структуру с именем STUDENT

15.05.2012, 15:37. Просмотров 1348. Ответов 1

Описать структуру с именем STUDENT, содержащую следующие поля:
 фамилия и инициалы;
 номер группы;
 успеваемость (массив из пяти элементов).
Написать программу, выполняющую следующие действия:
 ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT (записи должны быть упорядочены по возрастанию номера группы);
 вывод на экран фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4.0 (если таких студентов нет, вывести соответствующее сообщение).

Вообщем вот код, но когда ввожу оценку выкидывает исключение, подскажите, что не так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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("записей не найдено");
            }
        }
    }
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2012, 15:37
Ответы с готовыми решениями:

Описать структуру с именем STUDENT
Помогите пожалуста...Очень срочно нужно. За рание спасибо. Описать структуру...

Описать структуру с именем STUDENT
Описать структуру с именем STUDENT, содержащую следующие поля: - фамилия и...

Описать структуру с именем STUDENT
Описать структуру с именем STUDENT, содержащую следующие поля: - фамилия и...

Описать структуру с именем Student
1. Описать структуру с именем STUDENT, содержащую следующие поля: NAME –...

Описать структуру с именем STUDENT
Описать структуру с именем STUDENT, содержащую следующие поля: □ фамилия и...

1
dextermd
95 / 95 / 17
Регистрация: 04.09.2009
Сообщений: 133
15.05.2012, 19:26 #2
Проблема в этих двух строках. Если buf содержит не числовое значение - выкидывается исключение.
C#
1
2
student.GroupNumber = Convert.ToInt32(buf);
student.Marks[h] = Convert.ToInt32(buf);
Вот исправленный код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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("записей не найдено");
            }
        }
 
    }
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2012, 19:26

Описать структуру с именем STUDENT
Описать структуру с именем STUDENT, содержащую следующие поля: - фамилия и...

Описать структуру с именем STUDENT
описать структуру с именем student содержащую следующие поля: 1)фамилия и...

Описать структуру с именем Student
нужно описать структуру с именем Student , содержащую следующие поля:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru