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++Builder Discussion :

Comment retourner un vecteur dans une fonction ?


Sujet :

C++Builder

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par d�faut Comment retourner un vecteur dans une fonction ?
    Bonjour,


    dans mon application, j'ai une fonction qui fait un certain nombre de calcul dont les r�sultats sont de type float.
    Ensuite, je souhaiterai mettre ces r�sultats � l'int�rieur d'un vecteur et le faire retourner.
    J'ai essay� avec la m�thode insert mais cela ne fonctionne pas ... ou peut �tre que je ne l'utilise pas bien.
    Pourtant, j'ai regard� sur le net et dans la FAQ C++ mais je ne comprend pas bien comment on s'en sert.

    Je post ici mon code :
    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
     
    std::vector<float> Fonction::Combinaison01 (unsigned char *Parametres)
    {
     
    	std::vector<float> Param;
    	float Val1, Val2, Val3;
     
    	Val1 = (float)Parametres[9]/10.0;
    	Val2 = (float)((Parametres[12]*256) + Parametres[11])/10.0;
    	Val3 =  (float)((Parametres[14]*256) + Parametres[13])/10.0;
     
    	Param.push_back(Val1);
    	Param.push_back(Val2);
    	Param.push_back(Val3);
     
    	//Param.insert(Param.begin(), Param.begin(), Param.end());
     
    	return Param;
     
    }
    Comment puis je tout d'abord ins�rer dans mon vecteur dans l'ordre Val1 Val2 Val3 et ensuite apr�s retour r�utiliser ces valeurs ?

    Merci d'avance et � bient�t !

  2. #2
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Salut,
    je ne comprend pas bien ton probl�me, dans ton exemple tes valeurs sont ajouter au vecteur par les m�thodes push_back, tu n'as pas besoin de faire un insert

    De plus, il est mieux de faire pass� ton vecteur par un param�tre en r�f�rence, cela utilise moins de m�moire

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par d�faut
    Je ne comprend pas bien ce que tu veux dire !!!

    J'ai essay� les 2 m�thodes mais en retour je ne trouve (en mode pas � pas) que le r�sultat de Val1 !!!

    Comment ca se fait ?

  4. #4
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Est bien un vector s'utilise comme un tableau en lecture, tu trouvera donc tes valeur en fonction de l'index que tu demande :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    Param[0] //renvoie Val1
    Param[1] //renvoie Val2
    Param[2] //renvoie Val3

  5. #5
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Tu peux utiliser un vecteur dynamique, genre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
     
    int *Vecteur = new int[Taille] ;
    et le faire retourner par ta fonction.

    Ici il faut remplacer int par l'autre type de donn�es que tu utilise !

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par d�faut
    Merci beaucoup pour vos r�ponses.

    J'ai r�ussi � retourner les valeurs que je voulais.
    Par contre, je n'arrive pas � les r�utiliser pour les inscrire dans un fichier.

    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
     
    void Fichier::EcrireCombinaison01 ()
    {
     
     
    	Fonction LesFonctions;
     
    	fprintf (Fichier, "%.2f", LesFonctions.Resultats[0]);
    	fprintf (Fichier, " ");
     
    	fprintf (Fichier, "%.2f", LesFonctions.Resultats[1]);
    	fprintf (Fichier, " ");
     
    	fprintf (Fichier, "%.1f", LesFonctions.Resultats[2]);
    	fprintf (Fichier, " \n");
     
    }
    Lorsque le programme essaie d'effectuer le fprintf, j'ai une erreur et on sort du thread !!!

    Comment dois je faire pour �crire mes valeurs ?

  7. #7
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Salut,
    il nous manque une partit de ton code pour pouvoir t'aider, quel est le type de LesFonctions et de Resultats ?

  8. #8
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par d�faut
    Alors Resultats est d�clar� en public dans la classe Fonction : std::vector <float> Resultats;

    Et ma fonction EcrireCombinaison01() est dans une autre unit� .

  9. #9
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Ok, niveau code ca � l'air bon, regarde pendant l'ex�cution si ton vecteur est bien rempli, tu crash surement car tu essaye d'acc�der � un index qui n'existe pas.

    tu peut par exemple ajouter un test en d�but de ta m�thode :
    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
    void Fichier::EcrireCombinaison01 ()
    {
     
     
        Fonction LesFonctions;
     
        if(LesFonctions.Resultats.size() < 3)
             return;
     
        fprintf (Fichier, "%.2f", LesFonctions.Resultats[0]);
        fprintf (Fichier, " ");
     
        fprintf (Fichier, "%.2f", LesFonctions.Resultats[1]);
        fprintf (Fichier, " ");
     
        fprintf (Fichier, "%.1f", LesFonctions.Resultats[2]);
        fprintf (Fichier, " \n");
     
    }

  10. #10
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    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
     
    void Fichier::EcrireCombinaison01 ()
    {
     
     
        Fonction LesFonctions;
     
        if(LesFonctions.Resultats.size() < 3)
             return;
     
        fprintf (Fichier, "%.2f", LesFonctions.Resultats[0]);
        fprintf (Fichier, " ");
     
        fprintf (Fichier, "%.2f", LesFonctions.Resultats[1]);
        fprintf (Fichier, " ");
     
        fprintf (Fichier, "%.1f", LesFonctions.Resultats[2]);
        fprintf (Fichier, " \n");
     
    }
    Premi�rement, je te propose d'�crire directement dans un fichier texte. Il y a un exemple dans la FAQ.

    Deuxi�mement, je crois qu'il y a une ambigu�t� entre le nom de la class "Fichier" et le "Fichier" que tu passe en param�tre dans :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    void Fichier::EcrireCombinaison01 ()
    {
     
    ... 
        fprintf (Fichier, "%.2f", LesFonctions.Resultats[0]);
    ...
    Essaye la premi�re solution pour �tre s�r du r�sultat, ensuite tu perfectionne.

Discussions similaires

  1. [D�butant] Retourner un vecteur dans une fonction
    Par kheira dans le forum C++Builder
    R�ponses: 3
    Dernier message: 24/03/2010, 14h04
  2. comment faire un offset dans une fonction ?
    Par tempo-lyon dans le forum Macros et VBA Excel
    R�ponses: 6
    Dernier message: 23/10/2007, 11h15
  3. Retourner un tableau dans une fonction
    Par oranoutan dans le forum D�buter
    R�ponses: 14
    Dernier message: 05/10/2007, 13h39
  4. comment recuperer le resultat dans une fonction
    Par birame dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 11/06/2007, 12h00
  5. Retourn� resultat curseur dans une fonction
    Par L8O8L dans le forum Langage SQL
    R�ponses: 4
    Dernier message: 02/06/2007, 22h09

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