Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1403 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Erreur de segmentation.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur de segmentation.

n°2325442
lecode
Posté le 04-12-2018 à 19:27:00  profilanswer
 

Yo j'ai un petit souci avec mon code ... voilà il se compile mais lorsque je l’exécute, j'ai un problème de segmentation, j'ai tout essayé, j'ai demandé à des mecs de ma promo vraiment bons mais personne trouve !
 
il nous demande de faire un programme  , ( http://nicolas.thiery.name/Enseign [...] projet.pdf la consigne exercice 4 questions 1 )  
[Dans le fichier dechets-tableaux.cpp , complétez la fonction litTableauInt qui transforme un fichier en un tableau 2 dimensions. Testez votre fonction avec les tests proposes.] Le fichier avec les données : http://www.noelshack.com/2018-49-2 [...] -43-17.png
 
mon code : (j'ai oublié return t à la fin )

Code :
  1. #include <stdexcept>
  2. /** @file **/
  3. #include <fstream>
  4. #include <iostream>
  5. #include <vector>
  6. #include <string>
  7. using namespace std;
  8. /** Infrastructure minimale de test **/
  9. #define ASSERT(test) if (!(test)) cout << "Test failed in file " << __FILE__ << " line " << __LINE__ << ": " #test << endl
  10. /** Construction d'un tableau 2D d'entiers lu depuis un fichier
  11. * @param fichier le nom d'un fichier contenant un nombre fixe
  12.   * d'entiers par lignes, séparés par des espaces
  13. * @param nb_colonnes le nombre de colonnes du fichier
  14. * @return un tableau d'entiers à  deux dimensions
  15. **/
  16. vector<vector<int>> litTableauInt(string nom_fichier, int nb_colonnes) {
  17.     vector<vector<int> t ;
  18.     ifsteam fichier (nom_fichier);
  19.     int entier;
  20.     for(int i= 0; i < 13; i++){
  21.         for(int j = 0; j < nb_colonnes; j++){
  22.             while (fichier >> entier ) {   t[i][j = entier ;
  23.         } } }
  24.         return t
  25. }
  26. /** Test de la fonction litTableauInt **/
  27. void testLitTableauInt() {
  28.     vector<vector<int>> t = litTableauInt("donnees/tonnages_des_dechets_bacs_jaunes.txt", 13);
  29.     ASSERT(t[0][0] == 75007);
  30.     ASSERT(t[3][5] == 876);
  31.     ASSERT(t[19][12] == 235);
  32. }
  33. int main() {
  34.    testLitTableauInt()
  35. }


 
 
 
 
ALORS quelqu'un peut m'aider pour ce problème de segmentation ??

mood
Publicité
Posté le 04-12-2018 à 19:27:00  profilanswer
 

n°2325443
Farian
Posté le 04-12-2018 à 20:11:15  profilanswer
 

Bonjour ! Vous ne pouvez pas ajouter comme ça des éléments à un std::vector comme si c'était un tableau simple.
 
Vous devez soit faire des push_back, soit effecuer, avant, des resize, puis accéder aux éléments par leur indice.
 
Comme les tableaux sont de taille connue, il suffit de leur donner la bonne taille au départ et ça ira très vite.
 


---------------
On n'est jamais très fort pour ce calcul !
n°2325451
lecode
Posté le 04-12-2018 à 21:26:55  profilanswer
 

Farian a écrit :

Bonjour ! Vous ne pouvez pas ajouter comme ça des éléments à un std::vector comme si c'était un tableau simple.
 
Vous devez soit faire des push_back, soit effecuer, avant, des resize, puis accéder aux éléments par leur indice.
 
Comme les tableaux sont de taille connue, il suffit de leur donner la bonne taille au départ et ça ira très vite.
 


 
 
Je vous avoue que je suis pas très bon, je commence donc pouvez vous m'expliquez autrement ?  

n°2325462
gilou
Modérateur
Modzilla
Posté le 05-12-2018 à 00:43:20  profilanswer
 

Ce qu'on te dit, c'est que tu peux pas faire
while (fichier >> entier ) {   t[i][j] = entier ;
parce que tu sais pas si ton vecteur (de vecteur) est assez grand.
Un vecteur ça peut croitre ou diminuer, mais à condition d'utiliser ses méthodes ad-hoc.
http://www.cplusplus.com/reference [...] push_back/
ou alors il faut le faire assez grand au départ
http://www.cplusplus.com/reference [...] or/vector/
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Erreur de segmentation.

 

Sujets relatifs
ERREUR SEGMENTATION CORE DUMPEDerreur de segmentation sur matrice
Erreur de segmentation fgets avec GCCmemoire, variable et erreur de segmentation
Démineur erreur de segmentation[c] erreur de segmentation
[résolu][C] Strlen - erreur de segmentation[ C ] Erreur de segmentation (core dumped)
Courbes avec Qwt (erreur de segmentation)Erreur de segmentation avec un main vide
Plus de sujets relatifs à : Erreur de segmentation.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR