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

  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 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    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