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 :

Matrices en arguments de fonction


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 35
    Par défaut Matrices en arguments de fonction
    Bonjour,
    J'ai une fonction qui manipule des matrices et j'aimerai envoyer une matrice en argument sans avoir a spécifier la taille de celle-ci.

    Actuellement (ca marche) le prototype de la fonction est
    void gauss(REAL a[100][100],REAL b[100],int n) donc la taille maximal pour une matrice est 100x100. Comment faire pour supprimer cette limite ?
    J'ai essayé
    void gauss(REAL a[][],REAL b[],int n) mais cela ne marche pas (error: invalid use of array with unspecified bounds lorsque on accede a la matrice a[i][j])


    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu es bien obligé de passer la taille de la matrice à ta fonction, d'une façon ou d'une autre.

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    void gauss(REAL *a, REAL *b, int n)

  3. #3
    Invité
    Invité(e)
    Par défaut
    La première matrice a deux dimensions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void (REAl **a, int nb_lignesA, int nb_colonnesA, REAL *b, int tailleB, int n
    Si tu supprimes la limite, ça veut dire que ta matrice est allouée dynamiquement, donc tu ne peux pas te passer des pointeurs et des tailles en paramètre.

  4. #4
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 35
    Par défaut
    Bonjour,
    Merci de vos réponses.

    J'envois la taille de la matrice en argument (int n, la matrice etant une matrice carrée) mais le problème c'est que je ne peux pas acceder aux éléments de la matrice en faisant a[i][j], je suis obligé de faire a[i*n+j]. (en utilisant le type void gauss(REAL *a, REAL *b, int n))


    Merci.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mais pourquoi tu as un simple pointeur sur 'a' alors que ta matrice a deux dimensions ?
    Dernière modification par Invité ; 20/05/2008 à 12h50.

  6. #6
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 35
    Par défaut
    Sinon j'ai un problème lorsque je passe la matrice a en argument de la fonction.

    Je pense que je vais laisser comme ça, au moins lors de la création de a je n'ai pas besoin de créer un tableau de pointeurs de réels mais seulement un tableau de réels.


    Merci beaucoup.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Gastiflex > il suffit de placer tous les éléments consécutivement, on peut alors accéder à l'élement ligne i colonne j via l'indice [i*p + j], avec p le nombre de colonnes.
    | 0 1 2 |
    | 3 4 5 |

    L'élément ligne 2 colonne 2 (pour l'ordinateur, ligne 1 colonne 1, on compte à partir de 0) a bien l'indice 1*3 + 1 = 4.

    Impossible d'utiliser une construction a[i][j], mais tu peux toujours définir une macro pour rendre ton code plus lisible, si nécessaire.

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

Discussions similaires

  1. Espace dans les arguments de fonction
    Par black is beautiful dans le forum Windows
    Réponses: 2
    Dernier message: 11/03/2006, 12h06
  2. [JAVASCRIPT] passage d'argument à une fonction
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/06/2005, 18h17
  3. vector<bool> comme argument de fonction
    Par Krishna dans le forum SL & STL
    Réponses: 11
    Dernier message: 09/09/2004, 08h30
  4. Passer une fonction comme argument à une fonction
    Par Cocotier974 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/06/2004, 13h41
  5. Matrice de pointeurs de fonctions
    Par sebduth dans le forum C
    Réponses: 15
    Dernier message: 18/07/2003, 14h03

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