IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Toujours la même valeur dans mon vecteur


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut Toujours la même valeur dans mon vecteur
    bonjour,

    voilà j'utilise peut etre mal mon vector mais j'ai ce problème :
    j'ecris dans un fichier texte les valeurs qu'il contient ( ligne à ligne). J'obtient le bon nombre de lignes (donc le vecteur contient bien le bon nombre de valeurs) mais elles sont toutes identiques (et elles ne devraient pas, j'obtiens uniquement la derniere valeur sur toute les lignes)

    voici mon code :

    avant j'avais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    cooc->calculParametres();
    fprintf(f, "1\t");
    cooc->getParametres()->ecrireParamFichier(f);
    fprintf(f,"\n");
    ecrireparam ecrit simplement les valeurs des parametres sur une ligne (ces valeurs sont correctes)

    maintenant j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cooc->calculParametres();
    ApprentissageExterieur->push_back(cooc->getParametres());
    au lieu de les ecrire dans un fichier texte je veux stocker les valeurs dans un vecteur.

    Ensuite pour vérifier j'ai fais la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    {
    	std::string fichierSignet = "fichier.txt";
            std::ofstream fichier(fichierSignet.c_str(), std::ios::trunc);
    	if ( !fichier ){
    		std::cerr << "Erreur de creation du fichier" << std::endl;
    		exit(1);
    	}
    	const std::string SEP = "\t";
    	for( std::vector<HaralickVecteur *>::iterator it = Vec->begin();  it!=Vec->end();it++)
    	{	
    		fichier << (*it)->homogeneite << SEP << (*it)->contraste << SEP << (*it)->momentAngulaire << std::endl;
    	}
    	fichier.close();
    }
    ma boucle for boucle bien le nombre de fois qu'elle dois, mais j'ai toujours mes valeurs (homogeneite etc..) identiques qui correspondent à la derniere...

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Le problème vient d'ailleurs.
    Fais un exemple minimal réduit.
    Boost ftw

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    hm, qu'est ce que tu appelles un exemple minimal réduit? (un petit jeu de données?)
    en fait je travail sur une image et je calcule mes valeurs pour chaque pixel sélectionné, là j'ai débuggé et j'ai vu que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ApprentissageExterieur->push_back(cooc->getParametres());
    mon cooc->getParametres recoit les bonnes valeurs du getter.

    Le problème doit venir au moment où je veux afficher dans le fichier texte (mais je vois pas où).

    J'appelle (apres avoir fait tout mes push_back) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HaralickVecteur ::TESTFIC(ApprentissageExterieur);
    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
    void HaralickVecteur ::TESTFIC(std::vector<HaralickVecteur *>* Vec)
    {
    	std::string fichierSignet = "fichier.txt";
            std::ofstream fichier(fichierSignet.c_str(), std::ios::trunc);
    	if ( !fichier ){
    		std::cerr << "Erreur de creation du fichier" << std::endl;
    		exit(1);
    	}
    	const std::string SEP = "\t";
    	for( std::vector<HaralickVecteur *>::iterator it = Vec->begin();  it!=Vec->end();it++)
    	{	
    		fichier << (*it)->homogeneite << SEP << (*it)->contraste << SEP << (*it)->momentAngulaire << std::endl;
    	}
    	fichier.close();
    }
    ApprentissageExterieur est déclaré comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<HaralickVecteur *>* ApprentissageExterieur;
    j'ai du ajouter un "*" pour une histoire de code non managé.

  4. #4
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut
    Et si tu places un break_point dans TESTFIC et que tu vérifies les valeurs de Vec est t'il correctement remplie ?
    Linux > *

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    bah j'ai toujours la dernière valeur (le break point je le met bien dans le for? je vois pas où ailleurs).
    Je comprends pas pourquoi j'ai les bonnes valeurs lors du push_back et apres en voulant les récupérer j'y arrive pas

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Ca sens le problème de pointeur. Comment rempli-tu le vecteur ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    oui je pense que c'est un pb de pointeur mais je vois pas où

    je le rempli là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ApprentissageExterieur->push_back(cooc->getParametres());
    cooc->getparametres a la bonne valeur mais après je sais pas trop si tout se stocke bien...

    le fait que j'ai eu à déclarer mon vector avec un * me perturbe un peu j'avoue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private: std::vector<HaralickVecteur *>* ApprentissageExterieur;

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    ah j'ai enfin trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ApprentissageExterieur->push_back(new HaralickVecteur(cooc->getParametres()));
    ca va mieux comme ca !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tant qu'il y a des valeur dans mon tableau.
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/03/2007, 10h57
  2. [JTextField] getText renvoie toujours la même valeur
    Par Sufflope dans le forum Composants
    Réponses: 4
    Dernier message: 13/01/2007, 01h12
  3. Passer des valeurs dans mon actionform sans les afficher
    Par tonito53 dans le forum Struts 1
    Réponses: 6
    Dernier message: 04/01/2007, 11h36
  4. Insérer une valeur dans un vecteur
    Par jalilv6 dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 07h04
  5. Supprimer une valeur dans un vecteur
    Par jalilv6 dans le forum Langage
    Réponses: 2
    Dernier message: 06/04/2006, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo