Passage de tableaux dynamiques (2 dimensions) en paramètres [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
15 avril 2009
-
Messages postés
6
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
15 avril 2009
-
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

Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
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]
Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
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.
Messages postés
6
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
15 avril 2009

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);
                ...}
Messages postés
6
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
15 avril 2009

Problème résolu avec un autre compilateur et le même code, mauvaise configuration du premier surement
Messages postés
6
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
15 avril 2009

Je sais mais il n'y a pas 36 manières de passer des tableaux dynamiques