Appel d'une matrice dans une fonction - C - Programmation
Marsh Posté le 22-11-2012 à 23:54:05
Dans votre prédéclaration, ligne 4, vous indiquez :
void saisie(int);
Et ensuite, vous la définissez correctement :
void saisie(int mat1[DIM][DIM])
{
...
}
Pendant la compilation du "main", le compilateur ne connait que la pré-déclaration (void saisie(int)) et déclare donc que les paramètres sont incorrects.
Bonne continuation
Marsh Posté le 23-11-2012 à 13:00:49
Merci pour votre réponse.
J'ai changé les paramètres du prototypage des fonctions, en mettant int **. Mais il ne compile toujours pas et me dit : "impossible de convertir un int [3][3] en int **. Lorsque j'enlève le prototypage (donc le problème du int **) et que je mets directement les définitions des fonctions avant le main, tout marche très bien. J'écris donc une nouvelle erreur dans le prototypage de mes fonctions. J'ai édité le code de mon premier message pour indiquer les modifications.
Merci !
Marsh Posté le 24-11-2012 à 19:25:07
Quelqu'un aurait-il une idée de comment je devrais faire le prototypage des fonctions ?
Merci !
Marsh Posté le 24-11-2012 à 19:48:21
Utilisez dans la pré-déclaration ce que vous mettez par la suite dans la définition, soit :
void saisie(int mat1[DIM][DIM]);
void addition(int mat1[DIM][DIM]);
void soustraction(int mat1[DIM][DIM]);
void multiplication(int mat1[DIM][DIM]);
Marsh Posté le 26-11-2012 à 05:46:39
Bonjour,
Effectivement, c'est ce que je pensais faire, pour être sûr que ça marche.
Mais étant donné que dans mes prototypages, j'écris uniquement le type de la variable (pas la variable), par exemple :
void permute(int *, int *);
Je me demandais comment faire dans le cas des matrices. Je pensais que
void saisie(int **);
marcherait mais non. Je suis donc obligé d'écrire :
void saisie(int mat1[DIM][DIM]);
?
Merci.
Marsh Posté le 26-11-2012 à 09:29:19
C'est pas exactement la même chose ça : void foo(int ** T) et ça : void foo (int T[SIZE][SIZE])
Un prototype doit avoir exactement les même variables que le corps :
void saisie(int T[DIM][DIM]);
void addition(int T1[DIM][DIM],int T2[DIM][DIM],int T3[DIM][DIM]);
etc,etc.
Ou alors, changer les types de variables dans tes corps pour passer d'un Tab2D à un pointer sur pointer.
Marsh Posté le 22-11-2012 à 23:29:44
Bonjour
J'ai écrit un petit programme permettant de faire quelques opérations basiques sur les matrices (addition, soustraction, multiplication). Lors de la compilation, il indique une erreur au niveau de l'appel de la fonction saisie indiqué en commentaire : impossible de convertir un int [3][3] en int **
Voici le programme :
Pourtant, j'ai vérifié et normalement pour les matrices, comme pour les tableaux à une dimension, il faut bien mettre matA en argument de la fonction "saisie" (idem pour matB). Je dois forcément me tromper quelque part. Quelqu'un pourrait-il m'éclairer ? Merci !
Message édité par tropcontent le 23-11-2012 à 13:06:30