Produit 2 matrices en langage c

Fermé
developpeuz - 19 oct. 2009 à 23:44
 krimou - 27 nov. 2010 à 11:55
Bonjour,
ben voila j'ai un exerice assez simple qui consiste à caculer le produit C de deux matrices A et B.ces trois matrices seront représentés par des tableaux de double.

j'ai ecris deux fonctions. la premiére est une fonction saisie qui permet de saisir les deux matrices et deuxiéme fonction fait le calcul. et la je crois que le probléme vient de ma fonction qui fait le calcule


je vous passe le code :

#include<stdio.h>
#include<conio.h>
#define Tmax 50

void saisie ()

{
float A[Tmax][Tmax];
float B[Tmax][Tmax];
float C[Tmax][Tmax];
int i,j;
int nbr_ligne_a;
int nbr_colonne_a;
int nbr_ligne_b;
int nbr_colonne_b;
int resultat;
printf("Entrez le nombre de lignes de la matrice A ");
scanf("%d",&nbr_ligne_a);
printf("Entrez le nombre de colonnes de la matrice A ");
scanf("%d",&nbr_colonne_a);
printf("Entrez le nombre de lignes de la matrice B ");
scanf("%d",&nbr_ligne_b);
printf("Entrez le nombre de colonnes de la matrice B ");
scanf("%d",&nbr_colonne_b);

for(i=0;i<nbr_ligne_a;i++)
{
for(j=0;j<nbr_colonne_a;j++)
{
printf("Entrez le coefficient a(%d,%d) ",i+1,j+1);
scanf("%f",&A[i][j]);
}
}

printf("\n");
for(i=0;i<nbr_colonne_b;i++)
{
for(j=0;j<nbr_ligne_b;j++)
{
printf("Entrez le coefficient b(%d,%d) ",i+1,j+1);
scanf("%f",&B[i][j]);
}
}
}

int produit(float A[][Tmax],float B[][Tmax],float C[][Tmax],int nbr_ligne_a,int nbr_colonne_a,int nbr_ligne_b,int nbr_colonne_b)
{
float prod;
int i;
int j;
int k;
int resultat =0;
if (nbr_colonne_a == nbr_ligne_b)
{
for(i=0;i<nbr_ligne_a;i++)
{
for(j=0;j<nbr_colonne_b;j++)
{
prod=0;
for(k=0;k<nbr_colonne_a;k++)
{
prod+=A[i][k]*B[k][j];
}
C[i][j]=prod;
}
}
}
else
resultat=1;
return resultat;
}

void main()
{
float A[Tmax][Tmax];
float B[Tmax][Tmax];
float C[Tmax][Tmax];
int i,j;
int nbr_ligne_a;
int nbr_colonne_a;
int nbr_ligne_b;
int nbr_colonne_b;
int resultat;
saisie();
resultat = produit(A,B,C,nbr_ligne_a,nbr_colonne_a,nbr_ligne_b,nbr_colonne_b);
if (resultat == 1)
printf("Problème de dimension. Le nombre de colonnes de la matrice A doit avoir être egale au nombre de lignes de la matrice B. \n");
else
{
printf("Le produit des deux matrices A et B est : \n");
for(i=0;i<nbr_ligne_a;i++)
{
for(j=0;j<nbr_colonne_b;j++)
{
printf("\t%f",C[i][j]);
}
getch();
}
}
}

merci pour votre aide :d
A voir également:

4 réponses

Utilisateur anonyme
20 oct. 2009 à 19:05
Donc ta fonction de calcul est juste. Du moins quand tu calcules ton produit. Mais il y a quelque chose qui m'échappe dans ton programme... Quand initialises-tu les variables des nombres de lignes et de colonnes que tu as déclarées dans ton main (celles que j'ai mises en gras)? Pour la saisie tu déclares tes variables pas de problème, tu remplis tes tableaux grâce à ces variables, mais celle du main sont définies comment?

void main()
{
float A[Tmax][Tmax];
float B[Tmax][Tmax];
float C[Tmax][Tmax];
int i,j;
int nbr_ligne_a;
int nbr_colonne_a;
int nbr_ligne_b;
int nbr_colonne_b;

int resultat;
saisie();
resultat = produit(A,B,C,nbr_ligne_a,nbr_colonne_a,nbr_ligne_b,nbr_colonne_b);
7
Utilisateur anonyme
20 oct. 2009 à 13:53
Salut!

Ton programme m'a l'air correct, je voudrais savoir le problème que tu rencontres : dépassement de tableau? Problème à la compilation?

En tous cas le principe est bon et c'est l'essentiel, j'ai fait ce TP l'année dernière, je regarderai ce soir, je l'aurai sous les yeux, pour voir d'où vient l'erreur.

Si personne ne t'a répondu avant...
1
slt!si t'as pas encore resolu ton probleme,je crois qu'il devrait venir du fait que tu as mis "&"pour recuperer les valeurs de la matrice.donc essaye de changer "scanf("%f",&B[i][j]); " par "scanf("%f",B[i][j]);".et dit nous si cela a marché..bon courage!!
0
salut je veut cette matrix mais en fortran si vous pouvez m'aide
0