tropcontent | 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 :
Code :
- #include <stdio.h>
- #define DIM 3
- /*********/
- void saisie(int **);
- void addition(int **,int **,int **);
- void soustraction(int **,int **,int **);
- void multiplication(int **,int **,int **);
- /*********/
- void main()
- {
- int matA[DIM][DIM], matB[DIM][DIM], matC[DIM][DIM], choix, i,j;
- printf("Nous allons entrer les elements de votre premiere matrice\n" );
- saisie(matA);/*ERREUR COMPILATION : IMPOSSIBLE DE CONVERTIR UN INT [3][3] EN INT ** */
- printf("Nous allons entrer les elements de votre seconde matrice\n" );
- saisie(matB);/*ERREUR COMPILATION : IMPOSSIBLE DE CONVERTIR UN INT [3][3] EN INT ** */
- printf("Quelle operation voulez-vous faire sur vos matrices ? (addition=1, soustraction=2, multiplication=3)" );
- scanf("%d",&choix);
- switch (choix)
- {
- case 1:{addition(matA,matB,matC);break;}
- case 2:{soustraction(matA,matB,matC);break;}
- case 3:{multiplication(matA,matB,matC);break;}
- default:{printf("Error" );choix=0;}
- }
- if (choix!=0)
- {
- printf("Voici la matrice resultante : \n" );
- for (i=0;i<DIM;i++)
- {
- for (j=0;j<DIM;j++) printf("%d ",matC[i][j]);
- printf("\n" );
- }
- }
- }
- /*************/
- void saisie(int mat1[DIM][DIM])
- {
- int i,j;
- for (i=0;i<DIM;i++)
- for (j=0;j<DIM;j++)
- {
- printf("Entrer mat1[%d][%d]: \n",i,j);
- scanf("%d",&mat1[i][j]);
- }
- }
- void addition(int mat1[DIM][DIM], int mat2[DIM][DIM], int mat3[DIM][DIM])
- {
- int i,j;
- for (i=0;i<DIM;i++)
- for (j=0;j<DIM;j++)
- mat3[i][j]=mat1[i][j]+mat2[i][j];
- }
- void soustraction(int mat1[DIM][DIM], int mat2[DIM][DIM], int mat3[DIM][DIM])
- {
- int i,j;
- for (i=0;i<DIM;i++)
- for (j=0;j<DIM;j++)
- mat3[i][j]=mat1[i][j]-mat2[i][j];
- }
- void multiplication(int mat1[DIM][DIM], int mat2[DIM][DIM], int mat3[DIM][DIM])
- {
- int i,j,k;
- for (i=0;i<DIM;i++)
- for (j=0;j<DIM;j++)
- {
- mat3[i][j]=0;
- for (k=0;k<DIM;k++) mat3[i][j]+=mat1[i][k]*mat2[k][j];
- }
- }
|
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
|