Bonjour, J'ai un exercice sur les structures. Voici l'énoncé:

Ecrire un programme en langage C++ qui contient les opérations suivantes:

Définir un type structure appelé étudiant permettant de représenter un étudiant avec les champs

nom, prénom

Date de naissance

la moyenne des notes par semestre(pour le stockage, utilisez un tableau à 8 éléments de type réels

la classe

le groupe.

Question: écrire une fonction qui affiche le nom de l'étudiant ayant la plus grande MOYENNE de CHAQUE CLASSE.

Voici le code que j'ai écrit, la fonction ne donne pas les bonne réponses, j'ai besoin d'aide merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
#include <iostream>
#include <string>
#include <random>
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
struct dateOfBirthday{
    int day;
    int month;
    int year;
};
struct grades{
    double grades[8];
};
struct student{
    string surname;
    string name;
    string patronymic;
    int course;
    double group;
    dateOfBirthday DOB;
    grades GR;
    double average1=0;
    double average2=0;
    double average3=0;
    double average4=0;
 
};
int random25(){
    int number1; random_device rd; mt19937 gen1(rd());
    uniform_int_distribution<> dist(2, 5);
    number1 = dist(gen1);
    return number1;
}
double randomGrades(){
    double number;
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<> dist(0, 10);
    number = dist(gen);
    number = number / 10;
    number += random25();
    return number;
}
int randomDay(){
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<> dist(1, 31);
    return dist(gen);
}
int randomMonth(){
    random_device rd; mt19937 gen(rd());
    uniform_int_distribution<> dist(1, 12);
    return dist(gen);
}
int randomYear() {
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<> dist(1998, 2002);
    return dist(gen);
}
int randomCourse(){
    random_device rd; mt19937 gen(rd());
    uniform_int_distribution<> dist(1, 7);
    return dist(gen);
}
int randomGroupe() {
    random_device rd; mt19937 gen(rd());
    uniform_int_distribution<> dist(1, 13);
    return dist(gen);
}
void handFill(student Univ[], int AmOfStu){
    int q;
    for (int i = 0; i < AmOfStu; i++){
        cout<< "Enter a name, surname and patronymic of student " << endl;
        cin >>Univ[i].name>> Univ[i].surname>> Univ[i].patronymic;
        cout<< "Enter a number of course and group" << endl;
        cin >>Univ[i].course >> Univ[i].group;
        cout<< "Enter a date of birhday. format d m y" << endl;
        cin >> Univ[i].DOB.day>> Univ[i].DOB.month >>Univ[i].DOB.year;
        cout <<"Enter 1 to fill grades by keyboard. Enter 2 to fill grades automaticly " <<endl;
        cin >>q;
 
        switch (q){
            case 1:
                cout <<"Enter the grades like 4.0 3 3.5"<< endl;
                cin >> Univ[i].GR.grades[0] >> Univ[i].GR.grades[1] >> Univ[i].GR.grades[2] >> Univ[i].GR.grades[3]>> Univ[i].GR.grades[4] >> Univ[i].GR.grades[5] >> Univ[i].GR.grades[6] >> Univ[i].GR.grades[7];
                break;
 
            case 2:
                for (int z = 0; z < 8; z++){
                Univ[i].GR.grades[z] = randomGrades();
                }
                break;
            }
 
        }
}
void ShowInfo(student Univ[], int number) {
        for (int i = 0; i < number; i++){
        cout<< " name, surname and patronymic " << endl;
        cout<<Univ[i].name<< Univ[i].surname<< Univ[i].patronymic<<endl;
        cout<< " course and group" << endl;
        cout<<Univ[i].course << Univ[i].group<<endl;
        cout<< " date of birhday. format d m y" << endl;
        cout << Univ[i].DOB.day<< Univ[i].DOB.month <<Univ[i].DOB.year<<endl;
        cout<<"============================"<<endl;
    }
}
void autoFill(student Univ[], int AmOfStu){
    for (int i = 0; i < AmOfStu; i++){
        string rd = to_string(i);
        Univ[i].name = "name"; Univ[i].name += rd;
        Univ[i].surname = "surname"; Univ[i].surname += rd;
        Univ[i].patronymic = "patronymic"; Univ[i].patronymic += rd;
        Univ[i].course = randomCourse();
        Univ[i].group = randomGroupe();
        Univ[i].DOB.day = randomDay();
        Univ[i].DOB.month = randomMonth();
        Univ[i].DOB.year = randomYear();
        if (((Univ[i].DOB.month == 6 || Univ[i].DOB.month == 9 || Univ[i].DOB.month == 11)) && Univ[i].DOB.day == 31){
            Univ[i].DOB.day -= 1;
        }
        if ((Univ[i].DOB.month == 2) && (Univ[i].DOB.day == 31)){
            Univ[i].DOB.day -= 3;
        }
        if ((Univ[i].DOB.month == 2) && (Univ[i].DOB.day == 30)){
            Univ[i].DOB.day -= 2;
        }
        if ((Univ[i].DOB.month == 2) && (Univ[i].DOB.day == 29)){
            Univ[i].DOB.day -= 1;
        }
 
        for (int w = 0; w < 8; w++){
            Univ[i].GR.grades[w] = randomGrades();
        }
    }
}
 
void checkTheHeighMark(student Univ[], int AmOfStu) {
    double sum1=0, sum2=0, sum3=0, sum4=0, ppt1, ppt2, ppt3, ppt4, moy1, moy2, moy3, moy4;
    int indice1=0, indice2=0, indice3=0, indice4=0;
    int a=0,b=0,c=0,d=0;
    bool k1, k2, k3, k4;
    sum1 = 0;sum2 = 0;sum3 = 0;sum4 = 0;
    k1 = 0;k2 = 0;k3 = 0;k4 = 0;
    for (int i = 0; i < AmOfStu; i++) {
        for (int j = 0; j < 8; j++) {
            if (Univ[i].course == 1) {
                sum1 += Univ[i].GR.grades[j];
                k1 = 1;
                a++;
            }
            if (Univ[i].course == 2) {
                sum2 += Univ[i].GR.grades[j];
                k2 = 1;
                b++;
            }
            if (Univ[i].course == 3) {
                sum3 += Univ[i].GR.grades[j];
                k3 = 1;
                c++;
            }
            if (Univ[i].course == 4) {
                sum4 += Univ[i].GR.grades[j];
                k4 = 1;
                d++;
            }
        }
        if (k1) {
            moy1 = sum1 / 8;
            Univ[i].average1 = moy1;
        }
        if (k2) {
            moy2 = sum2 / 8;
            Univ[i].average2 = moy2;
        }
        if (k3) {
            moy3 = sum3 / 8;
            Univ[i].average3 = moy3;
        }
        if (k4) {
            moy4 = sum4 / 8;
            Univ[i].average4 = moy4;
        }
    }
    if (k1) {
    ppt1 = 1.0;
    for (int i = 0; i < a; i++) {
        if (Univ[i].average1 >= ppt1){
            ppt1=Univ[i].average1;
            indice1 = i;
        }
    }
    cout << "student " << Univ[indice1].name << endl;
    cout << "heigh mark " << Univ[indice1].average1<<endl;
    }
    if (k2) {
    ppt2 = 1.0;
    for (int i = 0; i < b; i++) {
        if (Univ[i].average2 >= ppt2){
        ppt2=Univ[i].average2;
        indice2 = i;
        }
    }
    cout << "student " << Univ[indice2].name << endl;
    cout << "heigh mark " << Univ[indice2].average2<<endl;
    }
    if (k3) {
        ppt3 = 1.0;
        for (int i = 0; i < c; i++) {
            if (Univ[i].average3 >= ppt3){
            ppt3=Univ[i].average3;
            indice3 = i;
        }
    }
    cout << "student " << Univ[indice3].name << endl;
    cout << "heigh mark " << Univ[indice3].average3<<endl;
    }
    if (k4) {
        ppt4 = 1.0;
            for (int i = 0; i < d; i++) {
                if (Univ[i].average4 >= ppt4){
                ppt4=Univ[i].average4;
                indice4 = i;
        }
    }
    cout <<"student " << Univ[indice4].name << endl;
    cout << "heigh mark " << Univ[indice4].average4<<endl;
    }
}
int main() {
    int number=8;
    student* stud = new student[8];
    handFill(stud,number);
    ShowInfo(stud,number);
    checkTheHeighMark(stud,number);// cette fonctionne ne donne pas les bonnes reponses
    return 0;
 
}