Bonjour, je travaille actuellement sur un projet, qui a pour but de créer un binômes avec deux élèves que l’utilisateur saisie.
Malheureusement je rencontre un problème lors de l'affichage du binômes d'un élèves, je sais qu'il y a une erreur d'accès a la mémoires du au lignes 56 a 61 mais je ne vois pas du-tout comment résoudre mon soucis.
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
/*POINTEURS ET TABLEAUX STATIQUE-- VILAIN -- 284I-- 24/10/2021 -- DEFINIR DES TYPES ET SAVOIR L'AFFCIHER*/
#include <stdlib.h>
#include <vector>
#include <string>
#include <unistd.h>
#include <fstream>
#include <stdio.h> // pour printf,scanf..
#include <iostream> // pour cin, cout, endl
 
using namespace std;
 
struct t_etudiant {
    int NumEtu;
    string Nom;
    string Prenom;
    t_etudiant* Binome = NULL;
};
 
void ModifNom (t_etudiant* Etu, string Nom, string Prenom) {
    Etu->Nom = Nom;
    Etu->Prenom = Prenom;
};
 
void CreerBinome(t_etudiant* Etu1, t_etudiant* Etu2) {
    if (Etu1 && Etu2) {
        Etu1->Binome = Etu2;
        Etu2->Binome = Etu1;
    }
    else {
        cout << "Vos variables ne sont pas définit" << endl;
        exit(-1);
    }
}
 
 
 
void DetruireBinome(t_etudiant Etu1, t_etudiant Etu2) {
    if (Etu1.Binome == &Etu2 && Etu2.Binome == &Etu1) {
        Etu1.Binome = NULL;
        Etu2.Binome = NULL;
        cout << "Le Binome n'existe plus" << endl;
    }
    else {
        cout << "Il n'y a pas de Binomes avec ces éleves" << endl;
    }
}
 
void AffichageInformations(t_etudiant &Etu){
    cout << "INFORMATION etudiant" << endl;
    cout << "---------------------" << endl;
    cout << "Numero etudiant : " << Etu.NumEtu << endl;
    cout << "Nom: " << Etu.Nom << endl;
    cout << "Prenom: " << Etu.Prenom << endl;
    cout << "----------------------" << endl;
 
    cout << "INFORMATION SUR SON Binome" << endl;
    cout << "--------------------------" << endl;
    cout << "Numero etudiant : " << Etu.Binome->NumEtu << endl;
    cout << "Nom: " << Etu.Binome->Nom << endl;
    cout << "Prenom: " << Etu.Binome->Prenom << endl;
    cout << "---------------------------" << endl;
}
 
bool MauvaisNumEtu(int NumEtu, t_etudiant tab[], int nbElm) {
    bool estUtilise = false;
    for (int i = 0; i < nbElm; i++) {
        if (tab[i].NumEtu == NumEtu) {
            estUtilise = false;
        }
    }
    return estUtilise;
}
 
void SaisieInfoEtu(t_etudiant &Etu, t_etudiant tab[], int nbElm) {
    cout << "Saisissez le Numero etudiant" << endl;
    cin >> Etu.NumEtu;
    while (MauvaisNumEtu(Etu.NumEtu, tab, nbElm) || Etu.NumEtu < 0) {
        if (Etu.NumEtu < 0) {
            cout << "Le numero saisi doit être positif" << endl;
            cout << "Reesayer : " << endl;
            cin >> Etu.NumEtu;
        }
        if (MauvaisNumEtu(Etu.NumEtu, tab, nbElm)) {
            cout << "Ce numero est deja pris" << endl;
            cin >> Etu.NumEtu;
        }
    }
    cout << "Entrez le prenom de l'étudiant" << endl;
    cin >> Etu.Prenom;
    cout << "Entre le nom de l'étudiant" << endl;
    cin >> Etu.Nom;
    cout << "N'oubliez pas d'attribuer un Binome à cet étudiant" << endl;
    cout << endl;
 
}
 
int main() {
 
    //cout << "Quel est le nombre d'etudiant dans ce groupe" << endl;
    int nbetudiant = 2;
 
    if (nbetudiant > 0) { //On utilisera le tableau "dans" le if
        t_etudiant *groupeEtu = new t_etudiant[nbetudiant]; 
 
 
 
        for (int i = 0; i < nbetudiant; i++) {
            SaisieInfoEtu(groupeEtu[i], groupeEtu, nbetudiant);
        }
 
            AffichageInformations(groupeEtu[0]);
            AffichageInformations(groupeEtu[1]);
 
        delete[] groupeEtu;
    }
    else {
        cout << "Le nombre d'etudiant doit etre positif." << endl;
    }
 
 
 
    return 0;
}
Et affiche en sortie :
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
Saisissez le Numero etudiant
98
Entrez le prenom de l'étudiant
YUn
Entre le nom de l'étudiant
Bui
N'oubliez pas d'attribuer un Binome à cet étudiant
 
Saisissez le Numero etudiant
76
Entrez le prenom de l'étudiant
GHy
Entre le nom de l'étudiant
IT
N'oubliez pas d'attribuer un Binome à cet étudiant
 
INFORMATION etudiant
---------------------
Numero etudiant : 98
Nom: Bui
Prenom: YUn
----------------------
INFORMATION SUR SON Binome
--------------------------
Erreur de segmentation (core dumped)
En espérant que vous pourriez m'aider
Merci d'avance