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 :

return une matrice dans une fonction [D�butant]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Octobre 2006
    Messages
    89
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Par d�faut return une matrice dans une fonction
    SVP aider moi , Je veux savoir c�est comment faire pour retourn� une matrice dans une fonction, j�ai une fonction qui fait un traitement sur une matrice mai je veux a la fin que ma fonction me return une matrice pour l�utiliser apr�s dans d�autre m�thode !! Mai j�ai pas sous comment faire

    Pour un vecteur on fait �a par exemple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    double *__fastcall TForm1::diff(double * tableau,int longeur , int indice )
    {
     double * solution = new double[longeur-];
     . 
    . 
    .
    return solution ; 
    }
    Mai pour la matrice on fait comment !!?

  2. #2
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par d�faut
    Pourquoi tu ne d�clares pas ta matrice comme une variable globale?..



    Citation Envoy� par kheira Voir le message
    SVP aider moi , Je veux savoir c�est comment faire pour retourn� une matrice dans une fonction, j�ai une fonction qui fait un traitement sur une matrice mai je veux a la fin que ma fonction me return une matrice pour l�utiliser apr�s dans d�autre m�thode !! Mai j�ai pas sous comment faire

    Pour un vecteur on fait �a par exemple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    double *__fastcall TForm1::diff(double * tableau,int longeur , int indice )
    {
     double * solution = new double[longeur-];
     . 
    . 
    .
    return solution ; 
    }
    Mai pour la matrice on fait comment !!?

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Tout d�pend de la nature de la matrice !

    a) un simple tableau (colonnes) peut �tre exploit� comme une matrice (lignes * colonnes).
    C'est assez rudimentaire et �ventuellement p�nalisant puisque l'acc�s aux donn�es prend cette forme : Tableau[ (y * colonnes) + x ].
    Dans ce cas, on retourne un simple pointeur (double*).

    b) on peut construire une matrice � l'aide d'un tableau de pointeurs.
    Il existe au moins deux jeux de construction :
    - soit on alimente le tableau de pointeurs en bocs de donn�es.
    - soit on segmente un bloc unique en sous-blocs.
    On retourne un pointeur vers pointeur (double**) puisque le tableau de pointeurs n'est rien de plus que la matrice tant convoit�e.

    Exemple :

    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
     
    double** CreerMatrice(int Lignes, int Colonnes)
    {
    int x=0,y=0;
    // Un tableau
    double *tableau = new double[ Lignes * Colonnes ];
     
    // Un tableau de pointeurs
    double **matrice = new double*[ Lignes ];
     
    // segmentation du tableau en sous-tableaux
    for(y=0; y < Lignes; y++) matrice[ y ] = &tableau[ y * Colonnes ]; 
     
    //BCB assume l'accès aux données pour ce type de construction sous une forme attendue :
    matrice[ y ][ x ] = 0.0;
     
    //on retourne la matrice
    return matrice;
    }
    Pour la destruction ult�rieure (sur la base du tableau segment�) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    double ** Matrice = CreerMatrice(...);
    // ...
    // ...
    double *tableau = *Matrice[0];
    delete [] tableau;
    delete [] Matrice;
    On a aussi la possiblit� d'obj�tiser pour avoir sous la main un "objet" matrice dot� de propri�t�s et m�thodes ad hoc (relatives � la matrice).
    A ce niveau l�, l'�conomie se situera au niveau de la r�daction du code, mais pas forc�ment au niveau de la rapidit� d'ex�cution.

    A plus !

  4. #4
    Membre confirm�
    Inscrit en
    Octobre 2006
    Messages
    89
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Par d�faut
    merci pour la r�ponce c'est essey� ce que vous m'avez donner et �a marche bien

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Remplacement d'une ligne par une autre dans une matrice
    Par Mathematiker dans le forum Scilab
    R�ponses: 4
    Dernier message: 17/02/2015, 14h57
  2. R�ponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est coch�e
    Par JessieCoutas dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    R�ponses: 8
    Dernier message: 21/06/2007, 13h48

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