bonsoir,
je viens de réaliser un programme qui permet la multiplication de deux matrices en fonction des indices.Je veux maintenant la réaliser en fonction des pointeurs.J'arrive à faire l'allocation des matrices, le remplissage et aussi l'affichage avec les pointeurs, mais j'ai du mal à réaliser la partie de la multiplication.
*voila le programme en fonction des indices :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main() {
          int **A , **B, **C;
          int  N,M,P,i,j,k,s,a,b;
          printf("entrer le nombre de ligne de la matrice A:");
          scanf("%d",&N);
          printf("entrer le nombre de colonne de la matrice A et le nombre de ligne de la matrice B:");
          scanf("%d",&M);
          printf("entrer le nombre de colonne de la matrice B:");
          scanf("%d",&P);
          A=(int**)malloc(N*sizeof(int*));
          for(i=0;i<N;i++) 
                  A[i]=(int*)malloc(M*sizeof(int));
          B=(int**)malloc(M*sizeof(int*));
          for(i=0;i<M;i++)
                   B[i]=(int*)malloc(P*sizeof(int));
          C=(int**)malloc(N*sizeof(int*));
          for(i=0;i<N;i++)
                   C[i]=(int*)malloc(P*sizeof(int));
          //remplissage de la matrice A
          printf("remplissage de la matrice A.\n");
          printf("\n");
          for(i=0;i<N;i++){ 
                          for(j=0;j<M;j++){
                                          printf("entrer la valeur d'indice %d,%d :",i,j);
                                          scanf("%d",*(A+i)+j);
                                          }
                          printf("\n");
                          }
          //Affichage de la matrice A
          printf("\nla matrice A est:\n");
          for(i=0;i<N;i++){
                          for(j=0;j<M;j++)
                                          printf("%6d",*(*(A+i)+j));
                          printf("\n");
                          }
          //remplissage de la matrice B
          printf("remplissage de la matrice B.\n");
          for(i=0;i<M;i++){ 
                          for(j=0;j<P;j++){
                                          printf("entrer la valeur d'indice %d,%d :",i,j);
                                          scanf("%d",*(B+i)+j);
                                          }
                          printf("\n");
                          }
          //Affichage de la matrice B
          printf("\nla matrice B est:\n");
          for(i=0;i<M;i++){
                          for(j=0;j<P;j++)
                                          printf("%6d",*(*(B+i)+j));
                          printf("\n");
                          }
          // La multiplication des deux matrices partie que j'arrive pas à transformer
          for(i=0;i<N;i++) {
                             for(j=0;j<P;j++) {
                                                    s=0;
                                                    k=0;
                                                    do {
                                                        a=*(*(A+i)+k);
                                                        b=*(*(B+k)+j);
                                                        s+=a*b;
                                                        k++;
                                                        }while(k<M);
                                                    *(*(C+i)+j)=s;
                                                    getch();
                                                    }
                              }
          //Affichage de la matrice C
          printf("\nla matrice C est:\n");
          for(i=0;i<N;i++){
                          for(j=0;j<P;j++)
                                          printf("%6d",*(*(C+i)+j));
                          printf("\n");
                          }
           getch();
           }
* voila le remplissage et l'affichage avec les pointeurs :

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
44
45
46
47
48
49
50
51
52
53
54
55
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
main() {
          int **A , **B, **C;
          int  N,M,P,i,j,s;
          printf("entrer le nombre de ligne de la matrice A:");
          scanf("%d",&N);
          printf("entrer le nombre de colonne de la matrice A et le nombre de ligne de la matrice B:");
          scanf("%d",&M);
          printf("entrer le nombre de colonne de la matrice B:");
          scanf("%d",&P);
          A=(int**)malloc(N*sizeof(int*));
          for(i=0;i<N;i++) 
                  A[i]=(int*)malloc(M*sizeof(int));
          B=(int**)malloc(M*sizeof(int*));
          for(i=0;i<M;i++)
                   B[i]=(int*)malloc(P*sizeof(int));
          C=(int**)malloc(N*sizeof(int*));
          for(i=0;i<N;i++)
                   C[i]=(int*)malloc(P*sizeof(int));
          //remplissage de la matrice A
          printf("remplissage de la matrice A.\n");
          printf("\n");
          for(p=A;p<A+N;p++){ 
                          for(q=*p;q<*p+M;q++){
                                          printf("entrer la valeur d'indice %d,%d :",p-A,q-(*p));
                                          scanf("%d",q);
                                          }
                          printf("\n");
                          }
         //Affichage de la matrice A
          printf("\nla matrice A est:\n");
          for(p=A;p<A+N;p++){
                          for(q=*p;q<*p+M;q++)
                                          printf("%6d",*q);
                          printf("\n");
                          }
          //remplissage de la matrice B
          printf("remplissage de la matrice B.\n");
          for(p=B;p<B+M;p++){ 
                          for(q=*p;q<*p+P;q++){
                                          printf("entrer la valeur d'indice %d,%d :",p-B,q-(*p));
                                          scanf("%d",q);
                                          }
                          printf("\n");
                          }
          //Affichage de la matrice B
          printf("\nla matrice B est:\n");
          for(p=B;p<B+M;p++){ 
                          for(q=*p;q<*p+P;q++)
                                          printf("%6d \t",*q);
                          printf("\n");
                          }
merci d'avance.