Soyez le premier à donner votre avis sur cette source.
Snippet vu 17 688 fois - Téléchargée 20 fois
#include <stdio.h> int valide(int x) { do { scanf("%i",&x); if ((x<0)||(x>20)) printf("vous devez entrer une valeur entre 1 et 20 : "); }while((x<=0)||(x>20)); return(x); } void main() { const n=20; int i,j,k,l1,l2,c1,c2; float mat1[n][n],mat2[n][n],matres[n][n]; do { printf("Donner le nombre de lignes de la matrice n° 1 \n"); l1=valide(l1); printf("Donner le nombre de colonnes de la matrice n°1 \n"); c1=valide(c1); printf("Donner le nombre de lignes de la matrice n° 2 \n"); l2=valide(l2); printf("Donner le nombre de colonnes de la matrice n°2 \n"); c2=valide(c2); if(c1!=l2) printf("Les tailles des deux matrices sont incompatible \n Il faut que le nombre de colonnes de la premiere matrice egal au nombre de lignes de la deuxieme matrice . \n"); }while(c1!=l2); printf("Tailles des matrices est bien choisis \n Votre nouvelle matrice aura cet taille %i lignes et %i colonnes ",l1,c2); for(i=0;i<l1;i++) { for(j=0;j<c1;j++) { printf("Donner l'element d'emplacement [%i,%i] de la premiere matrice \n",i+1,j+1); scanf("%f",&mat1[i][j]); } } for(i=0;i<l2;i++) { for(j=0;j<c2;j++) { printf("Donner l'element d'emplacement [%i,%i] de la dexieme matrice \n",i+1,j+1); scanf("%f",&mat2[i][j]); } } for(i=0;i<l1;i++) { for(j=0;j<c2;j++) { matres[i][j]=0; for(k=0;k<c1;k++) { matres[i][j]=matres[i][j]+mat1[i][k]*mat2[k][j]; } } } printf("le produit de la première et la deuxième matrice donne :"); for(i=0;i<l1;i++) { printf("("); for(j=0;j<c2;j++) { printf("%4.0f",matres[i][j]); } printf(")\n"); } }
{
if ( Colonne_A == Ligne_B )
{
return 1;
}
else return 0;
}
C'est la fonction que je n'ai pas mise mais qui se trouve dans la structure de contrôle if afin de vérifier que les matrices sont bien multipliables.
Voici ma fonction, elle ressemble évidemment beaucoup à la tienne.
void Multiplier_Matrice( int **Matrice, int **Matrice_A, int **Matrice_B, int Ligne_A, int Colonne_A, int Ligne_B, int Colonne_B )
{
if ( Matrice != NULL && Matrice_A != NULL && Matrice_B != NULL && Sont_Multipliables( Colonne_A, Ligne_B ) == 1 )
{
int i,j;
int Repeter=0;
for ( i=0 ; i<Ligne_A ; i++ )
{
for ( j=0 ; j<Colonne_B ; j++ )
{
while ( Repeter != Colonne_A )
{
Matrice[i][j]=Matrice[i][j]+ Matrice_A[i][Repeter]*Matrice_B[Repeter][j];
Repeter++;
}
Repeter=0;
}
}
}
else perror("\n\n Multiplier_Matrice : ");
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.