Il manque juste une accolade fermante avant le catch.
Version imprimable
Il manque juste une accolade fermante avant le catch.
Merci beaucoup pour votre aide a tous ! ;) Je vais essayer ca !
Ca ne marche toujours pas. Lorsque j'interroge un eleve d'une classe, il y a marque Je suis vide, je vais planter et vector::_M_range_check. Qu'est-ce qui ne va pas cette fois ?
Pouvez-vous m'aider svp car ca ne plantle plus mais ca affiche le message ci dessus. ;)
Aidez-moi svp ! ;)
Je me permet une nouvelle fois de relancer mon appel a l'aide et en particulier a votre aide car je suis perdu
( je ne comprends pas pourquoi ca ne marche pas ) S.V.P. ;)
Tu cherches à accéder à un élément du vector alors qu'il est vide (donc il n'y a aucun élément).
Je ne vois pas trop ce que tu n'arrives pas à comprendre ?
As-tu compris le code que tu as fait ???
Comment puis-je faire pour remplir le vecteur?
Pouvez-vous m'aider S.V.P ? ;) ;) ;) ;) ;)
Pourquoi mon vecteur est-il vide ?
Bonjour,
Ton vecteur est vide car lorsque tu parcours ton fichier tu es déjà à la fin de celui-ci ( tu as fait un count pour connaître le nombre de lignes ). Tu dois donc te repositionner au début avec ces deux instructions
CourageCode:
1
2
3 fichier.seekg(0L,ios::beg); fichier.clear();
Salut,
De manière générale, si ton vecteur est vide, c'est que tu ne l'as pas rempli... Lapalisse n'aurait pas dit mieux :D
Il y a, deux grosses raisons qui peuvent mener à cet état de fait
- La fonction qui se charge de remplir le vecteur n'est jamais appelée ou fait mal son travail
- Le vecteur "cesse d'exister" entre le moment où il est rempli et le moment où tu essaie d'accéder à ces éléments.
En l'occurence, vu que tu n'as pas pris la précaution élémentaire de factoriser ton code, j'ai l'impression que ce qui se trouve dans la boucle while(fichier>>linge) n'est purement et simplement jamais effectué...
Il faudrait vérifier le fonctionnement de count(), mais, je suis pour ainsi dire persuadé (sans l'avoir vérifié) que l'un de ses "effets non désirés" est... que l'on se retrouve en fin de flux apres avoir utilisé cette fonction...
Il y a donc deux solutions possibles:
- Soit, tu t'arrange pour revenir au début de ton fichier entre l'appel de count et le début de la boucle
- Soit, et c'est peut etre plus facile, et plus cohérent, tu remplis directement le vecteur apres t'être assuré que le fichier existe, et tu indique le nombre d'éleves en fonctions de la taille du vecteur APRES l'avoir rempli
En effet, tu t'emm:aie: à compter le nombre d'élèves de manière préalables, tout cela pour quoi:question: simplement pour pouvoir provoquer un affichage, dont, le plus souvent, tu n'auras rien à faire, et qui, en plus, peut se baser sur la taille du vecteur une fois qu'il est rempli...
Bref, tu cherches inutilement la difficulté...
N'oulie jamais que la solution la plus simple est toujours la moins compliquée...heu, je veux dire: la meilleure
Faire deux fois le travail, c'est le faire une fois de trop...
Or, ici, ton code tente de parcourrir deux fois le fichier (une fois pour compter le nombre d'élève, et une fois pour remplir le vecteur)...
J'ai essayé de faire un peu de nettoyage dans ton code tout en respectant ce que tu as fait.
Si tu veux continuer sur ce programme je te conseille d'étudier les fonctions et procédures. Ceci te permettra d'avoir un code plus lisible et plus maintenable.
J'ai l'impression que tu as construit ton code en empruntant des bouts de code mais tu n'a pas une vision globale des fonctionnalités souhaitées.
Allez courage, car c'est en programmant...
Je vous remercie a tous pour votre aide ! ;)
Maintenant, j'aimerais effacer la ligne ( l'eleve) pour ne plus qu'il soit reinterroger
Pouvez-vous m'indiquer comment faire? ;)
J'aimerais faire cela a la fois dans la copie du fichier et dans le vecteur.
Pouverz-vous m'aider ? ;)