Passage de tableaux dynamiques (2 dimensions) en paramètres

Résolu
Flo1987 Messages postés 6 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 15 avril 2009 - 9 déc. 2008 à 10:38
Flo1987 Messages postés 6 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 15 avril 2009 - 9 déc. 2008 à 11:32
Bonjour

je travaille avec des matrices et j'ai un problème lorsque je veux effectuer des des opérations dessus (chaque opération est une fonction à part). Lorsque j'appelle une de ces fonctions, celle-ci n'arrive pas à retrouver l'adresse de base de mes matrices. Le problème doit se trouver dans l'appel de la fonction mais je ne le trouve pas.

Déclaration de la fonction dans le header :
double** inverse(double **, int, double);

Appel de la fonction :
mat = inverse(tab, 6);

Prototype de la fonction :
double** inverse(double **norm, int dim)

Il m'est impossible d'accéder aux valeurs stockées dans norm car l'adresse n'est pas transmise correctement.

5 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
9 déc. 2008 à 11:13
Attention aux abus de langage !!!

char **pointeurdepointeur; n'est pas tout à fait la même chose que :
char tableau2dimensions[10][10];

en mémoire :
char tableau2dimensions[10][10]; est équivelent à
tableau1dimension[100]
3
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
9 déc. 2008 à 10:43
salut,

dans la fonction appelante, peux-tu nous montrer ton code pour voir comment tu as déclaré (voire initialisé) tab et mat.

tu as une erreur dans la déclaration (une fois avec 2 paramètres et l'autre avec 3), mais vu que tu arrives à compiler on va dire que tu as fait une erreur dans l'écriture de ton messages.
0
Flo1987 Messages postés 6 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 15 avril 2009
9 déc. 2008 à 10:53
Effectivement j'ai mal tapé la déclaration dans le header donc la voici déja :
double** inverse (double **, int);

Voici la partie du programme qui appelle cette fonction :

double **mat, **tab;
mat = allocation_dynamique(6, 6);
tab = allocation_dynamique(6, 6);

     while (qq < qmax)
            {
                qq = qq + 0.02;
                q_2 = puissance(qq, 2);
                kkx = p[k][3] / q_2;
                tab[0][0] = (q_2 + 1 - p[k][0] / kkx) / 2;
                tab[0][1] = (q_2 + 1 - p[k][1] / kkx) / 2;
                tab[0][2] = (q_2 + sqetal1 - p[k][3] / kkx) / 2;
                tab[0][3] = (q_2 + sqetal2 - p[k][4] / kkx) / 2;
                tab[0][4] = (q_2 + sqetal3 - p[k][5] / kkx) / 2;
                tab[0][5] = (q_2 + sqetal4 - p[k][6] / kkx) / 2;
                mat = inverse(tab, 6);
                ...}
0
Flo1987 Messages postés 6 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 15 avril 2009
9 déc. 2008 à 11:07
Problème résolu avec un autre compilateur et le même code, mauvaise configuration du premier surement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Flo1987 Messages postés 6 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 15 avril 2009
9 déc. 2008 à 11:32
Je sais mais il n'y a pas 36 manières de passer des tableaux dynamiques
0
Rejoignez-nous