Известны фамилии и оценки в баллах по 5 дисциплинам каждого из 25 студентов
группы. Требуется организовать: ввод, вывод, хранение на внешнем носителе,
сортировку по среднему баллу и его вычисление, поиск по фамилии ученика.
Задание
1. Реализовать решение задачи на основе массива структур с самостоятельной
разработкой следующих функций:
1) Функцию поиска по ФИО студента и вывод записи о нем.
2) Функции сортировки массива студентов по ФИО и среднему баллу.
3) Функции чтения/записи массива в файл.
2.Преобразовать предыдущее решение задачи в реализацию простейшим классом.
НЕ работает поиск по фамилии и запись этого всего в файл, подскажите как их реализовать в функциях, заранее благодарен)
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
| #include "pch.h"
#include <iostream>
#include <fstream>
//Класс «Группа студентов»
using namespace std;
struct Student {
char FIO[30];
int Ball[5];
float SrBall;
};
class Gruppa {
private:
int NGruppa;
Student St[100];
int size;
char *name;
char *FIO;
public:
Gruppa(int s = 0, int ng = 1) { size = s; NGruppa = ng; };
Gruppa *G1;
void showStudent();
void addStudent(int);
void sort_FIO();
void sort_srBall();
void poisk();
//void save();
};
int main()
{
setlocale(LC_ALL, "Russian");
Gruppa G1;
int count;
cout << "введите размер группы: ";
cin >> count;
G1.addStudent(count);
G1.showStudent();
G1.sort_FIO();
G1.sort_srBall();
G1.poisk();
//G1.save();
}
//вывод списка студентов
void Gruppa::showStudent() {
cout << endl << "Список студентов" << endl;
for (int k = 0; k < size; k++) {
cout << endl << k + 1 << ") " << St[k].FIO << ' ' << St[k].SrBall;
for (int i = 0; i < 5; i++)
cout << ' ' << St[k].Ball[i];
cout << endl;
}
cout << endl;
}
//добавление студентов
void Gruppa::addStudent(int s) {
char str[30];
if (size == 0) size = s;
for (int k = 0; k < size; k++) {
cout << endl;
cout << "FIO: "; cin.get(); cin.get(St[k].FIO, 30); cin.get();
St[k].SrBall = 0;
cout << "Ball: ";
for (int i = 0; i < 5; i++) {
cin >> St[k].Ball[i];
St[k].SrBall += St[k].Ball[i];
}
St[k].SrBall /= 5;
}
}
//Сортировка по фамилии
void Gruppa::sort_FIO() {
Student swap;
ofstream out;
out.open("D:\\Student.txt", ios::app);
if (out.is_open()) {
cout << "Список, отсортированный по фамилии" << endl << endl;
for (int i = 0; i < size; i++) {
for (int j = i + 1; j < size; j++)
if (strcmp(St[i].FIO, St[j].FIO) > 0) {
swap = St[i];
St[i] = St[j];
St[j] = swap;
}
}
for (int i = 0; i < size; i++) {
cout << i + 1 << ") ";
cout << "FIO: "<< St[i].FIO << endl;
cout << " SrBall: " << St[i].SrBall << endl;
cout << " Ball: ";
for (int j = 0; j < 5; j++)
cout << ' ' << St[i].Ball[j];
cout << endl;
}
cout << endl;
}
out.close();
}
//сортировка по ср.баллу
void Gruppa::sort_srBall() {
Student swap;
cout << "Список, отсортированный по среднемму баллу" << endl << endl;
for (int i = 0; i < size; i++) {
for (int j = i + 1; j < size; j++) {
if (St[i].SrBall > St[j].SrBall) {
swap = St[i];
St[i] = St[j];
St[j] = swap;
}
}
}
for (int i = 0; i < size; i++) {
cout << i + 1 << ") ";
cout << "FIO: " << St[i].FIO << endl;
cout << " SrBall: " << St[i].SrBall << endl;
cout << " Ball: ";
for (int j = 0; j < 5; j++)
cout << ' ' << St[i].Ball[j];
cout << endl;
}
cout << endl;
}
//поиск по фамилии
void Gruppa::poisk() {
//Gruppa *G1;
bool f1 = false;
cout << "Введите имя студента, которого надо найти \n"; cin >> *name;
cout << "Найденный студент" << endl << endl;
for (int i = 0; i < sizeof(G1)/sizeof(Student); i++) {
if (strcmp(G1[i].FIO, name) == 0) {
f1 = true;
cout << "FIO: " << St[i].FIO << endl;
cout << " SrBall: " << St[i].SrBall << endl;
cout << " Ball: ";
for (int j = 0; j < 5; j++)
cout << ' ' << St[i].Ball[j];
cout << endl;
break;
}
if (f1 == false)
cout << "Такой фамилии нет" << endl;
}
}
/*void Gruppa::save() {
Gruppa G1;
ofstream out;
out.open("D:\\Student.txt");
if (out.is_open()) {
out << "введите размер группы: " << size;
//out << G1.addStudent(size);
G1.showStudent();
G1.sort_FIO();
G1.sort_srBall();
//out << G1.posk << endl;
}
out.close();
}*/ |
|