Hello!
Voilà un bon moment que je me casse la tête sur ce mini code en C.
Malgré les astuces sur les pointeurs et le passage par paramètre de tableaux, je peine toujours à faire fonctionner ce code.
Si quelqu'un avait une tite idée, voyait une erreur immense qui m'a échappé... Je n'ai tout simplement aucun truc affiché dans la console et aucune erreur selon le compilateur...
Merci!

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
/*Ecrivez un programme qui additionne les deux matrices suivantes :
A={(1,2),(0,1),(2,2)}, B={(1,2),(1,4),(3,4)}
*/
 
#include <stdio.h>
 
//Matrices de [3][2] uniquement!
//Passages des matrices A et B en pointeurs prend - de place!
//pointeur resultat est pris pr etre modifie direct. Sinon besoin d'un return.
void addition(int *pointeurA, int *pointeurB, int *pointeurRes){
 
    int i;
    for(i=0; i<12; i+4){
        int j;
        for(j=0; j<2; j++){
            //Soit i le deplacement d'une adresse a l'autre (4 pour un int)
            (pointeurRes+i)[j]=((pointeurA+i)[j])+((pointeurB+i)[j]);
        }
    }
}
 
int main(){
 
    int matriceA[3][2]={{1,2},{0,1},{2,2}};
    //Pointeur vers les 1er element du tableau de 3 (soit, un premier couple de valeurs(d'ou le nombre 2 de sous elements))
    int (*ptrA)[2]=matriceA;
    int matriceB[3][2]={{1,2},{1,4},{3,4}};
    int (*ptrB)[2]=matriceB;
    int matriceResultat[3][2];
    int (*ptrRes)[2]= matriceResultat;
 
    addition(*ptrA, *ptrB, *ptrRes);
 
    printf("A+B=\n");
    int i;
    for (i=0; i<3; i++){
        printf("\n");
        int j;
        for (j=0; j<2; j++) {printf("%6d", (matriceResultat)[i][j]);}
    }
    return 0;
}