Matrice (multiplication+addition+soustraction)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 297 fois - Téléchargée 17 fois

Contenu du snippet

#include <stdio.h>
#include <stdlib.h>
int n,m,a,b,i,j,z,k;

void affichage()
{
printf("vous allez faire une addition de deux matrices qui ont le meme format\n\n");
printf("entrez le nombre de ligne de la matrice m1 \t");
scanf("%d",&n);
printf("\n");
printf("entrez le nombre de colonne de la matrice m1 \t");
scanf("%d",&m);
printf("\n");


printf("entrez le nombre de ligne de la matrice m2 \t");
scanf("%d",&a);
printf("\n");
printf("entrez le nombre de colonne de la matrice m2 \t");
scanf("%d",&b);
printf("\n");
}

void addition()

{
// on vérifie si les deux matrices ont le même format //
if ((n==a)&&(m==b))
{
printf("les deux matrices ont le meme format\n\n");
printf("entrez les elements de la cette matrice m1 \n\n");
int m1[n][m];
int m2[a][b];
int m3[n][m];
//entrez les valeurs de m1
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&m1[i][j]);
}
}
//affichage de m1
printf("voici m1:\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("\t|%d|",m1[i][j]);
}
printf("\t\n");
}

printf("\n\n");
//entrez les valeurs de m2
printf("entrez les elements de la cette matrice m2 \n\n");
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
scanf("%d",&m2[i][j]);
}
}
//affichage de m2
printf("voici m2:\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("\t|%d|",m2[i][j]);
}
printf("\t\n");
}
//affichage de m2+m1
printf("\n");
printf("le resultat de l'addition m1+m2 \n\n");

for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
m3[i][j]= m1[i][j]+ m2[i][j];
printf("\t|%d|",m3[i][j]);
}
printf("\n");
}

}
else
{
printf("vous pouvez pas faire l'addition car les deux matrices n'ont pas le meme format \n\n");
}

}

void soustraction()
{
// on vérifie si les deux matrices ont le même format //
if ((n==a)&&(m==b))
{
printf("les deux matrices ont le meme format\n\n");
printf("entrez les elements de la cette matrice m1 \n\n");
int m1[n][m];
int m2[a][b];
int m3[n][m];
//entrez les valeurs de m1
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&m1[i][j]);
}
}
//affichage de m1
printf("voici m1:\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("\t|%d|",m1[i][j]);
}
printf("\t\n");
}

printf("\n\n");
//entrez les valeurs de m2
printf("entrez les elements de la cette matrice m2 \n\n");
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
scanf("%d",&m2[i][j]);
}
}
//affichage de m2
printf("voici m2:\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("\t|%d|",m2[i][j]);
}
printf("\t\n");
}
//affichage de m2+m1
printf("\n");
printf("le resultat de la soustraction m1-m2 \n\n");

for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
m3[i][j]= m1[i][j]- m2[i][j];
printf("\t|%d|",m3[i][j]);
}
printf("\n");
}

}
else
{
printf("vous pouvez pas faire la soustraction car les deux matrices n'ont pas le meme format \n\n");
}
{
}
}

void multiplication()
{
// on vérifie si les deux matrices ont le même format //
if (m==a)
{
printf("les deux matrices ont le meme format\n\n");
printf("entrez les elements de la cette matrice m1 \n\n");
int m1[n][m];
int m2[a][b];
int m3[m][b];
//entrez les valeurs de m1
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&m1[i][j]);
}
}
//affichage de m1
printf("voici m1:\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("\t|%d|",m1[i][j]);
}
printf("\t\n");
}

printf("\n\n");
//entrez les valeurs de m2
printf("entrez les elements de la cette matrice m2 \n\n");
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
scanf("%d",&m2[i][j]);
}
}
//affichage de m2
printf("voici m2:\n\n");
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
printf("\t|%d|",m2[i][j]);
}
printf("\t\n");
}
//calcul de m2*m1
printf("\n");
printf("le resultat de la multiplication m1*m2 \n\n");
z=0;
for(i=0;i<n;i++)//n c'est nombre de ligne de m3
{
for(j=0;j<b;j++)//b c'esr nombre de colonne de m3
{

for(k=0;k<m;k++)//m c'est le nombre de colonne de m1

{

z=(m1[i][k]*m2[k][j])+z;

}
m3[i][j]=z;
z=0;
}

}
//affichage de m2*m1
for(i=0;i<n;i++)
{
for(j=0;j<b;j++)
{
printf("\t|%d|",m3[i][j]);
}
printf("\n");
}
}
else
{
printf("la multiplication est impossible car le nbre de colonne de m1 <> nbre de ligne m2 \n\n");
}

}

int main()
{
int menu;

printf("\t************************************************\n");
printf("\t* *\n") ;
printf("\t* voici votre menu *\n");
printf("\t* *\n") ;
printf("\t************************************************\n");
printf("\n\n");
printf("\t1: tapez 1 pour faire l'addition de deux matrice \n\n");
printf("\t2: tapez 2 pour faire la soustraction de deux matrice \n\n");
printf("\t3: tapez 3 pour faire la multiplication de deux matrice \n\n");
scanf("%d",&menu);
printf("\n\n");

switch (menu)
{
case 1:
{
affichage();
addition();
break;
}
case 2:
{
affichage();
soustraction();
break;
}
case 3:
{
affichage();
multiplication();
break;
}
}


system("PAUSE");
return 0;

}

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>
int n,m,a,b,i,j,z,k;

void affichage()
{
          printf("vous allez faire une addition de deux matrices qui ont le meme format\n\n");
          printf("entrez le nombre de ligne de la matrice m1 \t");
          scanf("%d",&n);
          printf("\n");
          printf("entrez le nombre de colonne de la matrice m1 \t");
          scanf("%d",&m);
          printf("\n");
          
          
          printf("entrez le nombre de ligne de la matrice m2 \t");
          scanf("%d",&a);
          printf("\n");
          printf("entrez le nombre de colonne de la matrice m2 \t");
          scanf("%d",&b);
          printf("\n");
} 

void addition()
 
 {                
         // on vérifie si les deux matrices ont le même format //
         if ((n==a)&&(m==b))
         {
         printf("les deux matrices ont le meme format\n\n");
         printf("entrez les elements de la cette matrice m1 \n\n");
         int m1[n][m];
         int m2[a][b];
         int m3[n][m];
         //entrez les valeurs de m1 
             for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 scanf("%d",&m1[i][j]);
                 }
             }
             //affichage de m1
             printf("voici  m1:\n\n");
             for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 printf("\t|%d|",m1[i][j]);
                 }
                 printf("\t\n");
             }
             
             printf("\n\n");
             //entrez les valeurs de m2
             printf("entrez les elements de la cette matrice m2 \n\n");
             for(i=0;i<a;i++)
             {
                 for(j=0;j<b;j++)
                 {
                 scanf("%d",&m2[i][j]);
                 }
             }
              //affichage de m2
              printf("voici  m2:\n\n");
              for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 printf("\t|%d|",m2[i][j]);
                 }
                 printf("\t\n");
             }
             //affichage de m2+m1
            printf("\n");
            printf("le resultat de l'addition m1+m2 \n\n"); 
            
            for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 m3[i][j]= m1[i][j]+ m2[i][j];
                 printf("\t|%d|",m3[i][j]);
                 }
                 printf("\n");
             }
                             
         } 
         else
         {
         printf("vous pouvez pas faire l'addition car les deux matrices n'ont pas le meme format \n\n");
         }
          
}        

void soustraction()
{
      // on vérifie si les deux matrices ont le même format //
         if ((n==a)&&(m==b))
         {
         printf("les deux matrices ont le meme format\n\n");
         printf("entrez les elements de la cette matrice m1 \n\n");
         int m1[n][m];
         int m2[a][b];
         int m3[n][m];
         //entrez les valeurs de m1 
             for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 scanf("%d",&m1[i][j]);
                 }
             }
             //affichage de m1
             printf("voici  m1:\n\n");
             for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 printf("\t|%d|",m1[i][j]);
                 }
                 printf("\t\n");
             }
             
             printf("\n\n");
             //entrez les valeurs de m2
             printf("entrez les elements de la cette matrice m2 \n\n");
             for(i=0;i<a;i++)
             {
                 for(j=0;j<b;j++)
                 {
                 scanf("%d",&m2[i][j]);
                 }
             }
              //affichage de m2
              printf("voici  m2:\n\n");
              for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 printf("\t|%d|",m2[i][j]);
                 }
                 printf("\t\n");
             }
             //affichage de m2+m1
            printf("\n");
            printf("le resultat de la soustraction m1-m2 \n\n"); 
            
            for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 m3[i][j]= m1[i][j]- m2[i][j];
                 printf("\t|%d|",m3[i][j]);
                 }
                 printf("\n");
             }
                             
         } 
         else
         {
         printf("vous pouvez pas faire la soustraction car les deux matrices n'ont pas le meme format \n\n");
         }
         {   
}   
}          
          
void multiplication()
{
     // on vérifie si les deux matrices ont le même format //
         if (m==a)
         {
         printf("les deux matrices ont le meme format\n\n");
         printf("entrez les elements de la cette matrice m1 \n\n");
         int m1[n][m];
         int m2[a][b];
         int m3[m][b];
         //entrez les valeurs de m1 
             for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 scanf("%d",&m1[i][j]);
                 }
             }
             //affichage de m1
             printf("voici  m1:\n\n");
             for(i=0;i<n;i++)
             {
                 for(j=0;j<m;j++)
                 {
                 printf("\t|%d|",m1[i][j]);
                 }
                 printf("\t\n");
             }
             
             printf("\n\n");
             //entrez les valeurs de m2
             printf("entrez les elements de la cette matrice m2 \n\n");
             for(i=0;i<a;i++)
             {
                 for(j=0;j<b;j++)
                 {
                 scanf("%d",&m2[i][j]);
                 }
             }
              //affichage de m2
              printf("voici  m2:\n\n");
              for(i=0;i<a;i++)
             {
                 for(j=0;j<b;j++)
                 {
                 printf("\t|%d|",m2[i][j]);
                 }
                 printf("\t\n");
             }
             //calcul de m2*m1
            printf("\n");
            printf("le resultat de la multiplication m1*m2 \n\n"); 
            z=0;
            for(i=0;i<n;i++)//n c'est nombre de ligne de m3
             {
                 for(j=0;j<b;j++)//b c'esr nombre de colonne de m3
                 {
                              
                      for(k=0;k<m;k++)//m c'est le nombre de colonne de m1
                      
                      {
                      
                      z=(m1[i][k]*m2[k][j])+z;
                      
                      }
                          m3[i][j]=z; 
                          z=0;     
                 }
                
             }
              //affichage de m2*m1
             for(i=0;i<n;i++)
             {
                 for(j=0;j<b;j++)
                 {
                 printf("\t|%d|",m3[i][j]);
                 }
                printf("\n");                
              }               
         } 
         else
         {
         printf("la multiplication est impossible car le nbre de colonne de m1 <> nbre de ligne m2 \n\n");
         }
        
}

int main()
{
    int menu;
    
    printf("\t************************************************\n");
    printf("\t*                                              *\n") ;
    printf("\t*              voici votre menu                *\n");
    printf("\t*                                              *\n") ;
    printf("\t************************************************\n");
    printf("\n\n");
    printf("\t1: tapez 1 pour faire l'addition de deux matrice       \n\n");
    printf("\t2: tapez 2 pour faire la soustraction de deux matrice  \n\n");
    printf("\t3: tapez 3 pour faire la multiplication de deux matrice \n\n");
    scanf("%d",&menu);
    printf("\n\n");
    
    switch (menu)
    {
           case 1:
                {
                affichage();
                addition();
                break;
                }
           case 2:
                {
                affichage();
                soustraction();
                break;
                }
           case 3:
                {
                affichage();
                multiplication();
                break;
                }
    }
 
   
  system("PAUSE");	
  return 0; 
  
}

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
12
Et depuis quand on déclare les variables en plein milieu de tout quand on fait tu C ?
Messages postés
6
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
23 mars 2009

aider est donner de l'energie bravo à tous les membres de codes-sources
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
Les parenthèses après un case sont non seulement autorisé, mais conseillé. Elles permettent de créer une porté qui évite les conflits de variables. Dans le cas présent, c'est vrai qu'elles ne sont absolument pas nécessaire.
Néanmoins, *encore* une source sur les matrices... Merci de regarder ce qui existe déjà avant de poster.
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
12
Pas très optimisé (276 -> 296) et je sais même pas si les accolades sont autorisées après un case ...
#affichage();
#switch(menu)
#{
# case 1: addition(); break;
# case 2: soustraction(); break;
# case 3: multiplication(); break;
#}

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.