C++ : suis-je aveugle ?
martom
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche l'erreur depuis un bout de temps maintenant.. sans succès..
Mon problème est qu'on dirait que mon tableau dynamique TD (voir code si-dessous) n'accepte pas qu'on lui donne un NOM ! Or il est déclaré comme un tableau de 'Etudiant'. et Devinez ce que contient Etudiant ?
Un nom, un sexe et un tableau de notes.
Ca marche très bien pour le sexe et le tableau de notes, mais impossible pour le nom.
Il veux bien compiler, mais quand il arrive a cette ligne là dans l'exécution, ca plante...
J'ai fais un test : je demande d'afficher it->get_nom() pour etre sur qu'il prend la bonne valeur, et en effet, il m'affiche bien le nom de l'etudiant (hérité de personne).
Voila mon code, vous allez comprendre tout de suite :
mon problème est en commentaire, il ne concerne que 3 lignes du code, mais je vous ai tout mis, comme ca je suis sur qu'il ne vous manque rien :) (il y a des tirets a cotes de ces 3 lignes, ca vous sautera au yeux)
Merci d'avance
CODE :
Je cherche l'erreur depuis un bout de temps maintenant.. sans succès..
Mon problème est qu'on dirait que mon tableau dynamique TD (voir code si-dessous) n'accepte pas qu'on lui donne un NOM ! Or il est déclaré comme un tableau de 'Etudiant'. et Devinez ce que contient Etudiant ?
Un nom, un sexe et un tableau de notes.
Ca marche très bien pour le sexe et le tableau de notes, mais impossible pour le nom.
Il veux bien compiler, mais quand il arrive a cette ligne là dans l'exécution, ca plante...
J'ai fais un test : je demande d'afficher it->get_nom() pour etre sur qu'il prend la bonne valeur, et en effet, il m'affiche bien le nom de l'etudiant (hérité de personne).
Voila mon code, vous allez comprendre tout de suite :
mon problème est en commentaire, il ne concerne que 3 lignes du code, mais je vous ai tout mis, comme ca je suis sur qu'il ne vous manque rien :) (il y a des tirets a cotes de ces 3 lignes, ca vous sautera au yeux)
Merci d'avance
CODE :
#include <iostream> #include <string> #include <algorithm> #include <vector> #include <list> using namespace std; class personne{ string nom; public : void saisie(); void aff(); string get_nom(); }; class etudiant:public personne{ int notes[2]; char sexe; public : void saisie(); void aff(); char get_sexe(); int get_notes(int i); }; char etudiant::get_sexe(){ return sexe;} int etudiant::get_notes(int i){ return(notes[i]);} string personne::get_nom(){return(nom);} struct Etudiant{ string nom; char sexe; int notes[2]; }; void transfert(list<etudiant> pr,vector<etudiant> de){ int dim=0, i=0; list<etudiant>::iterator it; vector<etudiant>::iterator itv; Etudiant *TD = new Etudiant[dim]; for(it=pr.begin(); it!=pr.end(); it++){ if(it->get_sexe()=='F'){ dim++; cout<<it->get_nom(); TD[i].notes[0]=it->get_notes(0); TD[i].notes[1]=it->get_notes(1); //TD[i].nom=it->personne::get_nom();-------------ici...----------------- TD[i].sexe=it->get_sexe(); i++; } } for(itv=de.begin(); itv!=de.end(); itv++){ if(itv->get_sexe()=='F'){ dim++; //TD[i].nom=itv->get_nom();---------------------------...et la...---------- TD[i].notes[0]=itv->get_notes(0); TD[i].notes[1]=itv->get_notes(1); TD[i].sexe=itv->get_sexe(); i++; } } if(dim<=0){ cout<<"\nDesole, il n'y a pas de fille dans les premieres et/ou deuxiemes"; return; } cout<<"\n\nLe tableau dynamique : "<<endl<<endl; for(int i=0; i<dim; i++){ //cout<<"\n\nNom : "<<TD[i].nom;-----------------------------------------et la.-- cout<<"\nNote 1 : "<<TD[i].notes[0]; cout<<"\nNote 2 : "<<TD[i].notes[1]; cout<<"\nSexe : "<<TD[i].sexe; } delete[] TD; } void main(void){........}
3 réponses
Petit erreur dans mon premier message :
La première ligne ou il y a une erreur, ce n'est pas it->personne::get_nom(); mais UNIQUEMENT it->get_nom().
La première ligne ou il y a une erreur, ce n'est pas it->personne::get_nom(); mais UNIQUEMENT it->get_nom().
Il me semble avoir déjà vu un code similaire quelque part... Alors ce qui me gène:
int dim = 0, i = 0;
Etudiant* TD = new Etudiant[dim];
TD[i].notes[0] = it->get_notes(0);
Vu l'erreur ? Et je n'ai même pas parlé du 'i++'.
Bonne réflexion.
int dim = 0, i = 0;
Etudiant* TD = new Etudiant[dim];
TD[i].notes[0] = it->get_notes(0);
Vu l'erreur ? Et je n'ai même pas parlé du 'i++'.
Bonne réflexion.