comme sont nom l'indique je souhaite effectuer le produit et la somme de trois matrice R = A*B+C

le code est

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
//Ajout des biblio
#include "stdafx.h"
#include<malloc.h>
#include<conio.h>
 
// prototype des fonction
void lec(int*,int);
void aff(int*,int);
void pro(int*,int);
void som(int*,int);
 
//partie declaration global
int i,j,N,*R,*M,k;
 
//programme principale
void main()
{
	printf("Donner la taille de votre matrice carrer svp : ");
	scanf("%d",&N);
	R=(int*)malloc(N*N*sizeof(int));
	printf("Entrer les element de la matrice A\n");
	lec(R,N);
	printf("Entrer les element de la matrice B\n");
	M=(int*)malloc(N*N*sizeof(int));
	lec(M,N);
	pro(M,N);
	printf("Entrer les element de la matrice C\n");
	lec(M,N);
	som(M,N);
	aff(R,N);
	free(M);
	free(R);
	getch();
}
 
//fonction Lecture
void lec(int*L,int)
{
	for (i=0;i<N;i++)
		for (j=0;j<N;j++)
		{
				printf("Donner l'element %d.%d : ",i+1,j+1);
				scanf("%d",&L[i*N+j]);
		}
}
//Fonction produit
void pro(int*P,int)
{
	for (i=0;i<N;i++)
		for (j=0;j<N;j++)
		{
			R[i*N+j]=0; //erreur corrigé !!! donc je lé supprimer
			for(k=0;k<N;k++)
				R[i*N+j]=R[i*N+j]+R[i*N+k]*P[k*N+j];
		}
}
//Fonction somme
void som(int*S,int)
{
	for (i=0;i<N;i++)
		for (j=0;j<N;j++)
			R[i*N+j]=R[i*N+j]+S[i*N+j];
}
 
//Fonction affichage
void aff(int*A,int)
{
	for (i=0;i<N;i++)
	{
		for (j=0;j<N;j++)
			printf("%3d",A[i*N+j]);
		printf("\n");
	}
}
le problème est que l'affichage n'est pas correcte ou du moins y a une erreur dans le programme que je n'ai pas remarquer. Il m'affiche toujours la matrice C or il doit afficher le résultat final.

Bon quand j'analyse mon programme je trouve que le problème est au niveau des indice de la fonction Produit, j'arrive pas a les géré.