Introduction
Dans ce laboratoire, vous allez apprendre à effectuer diverses opérations sur des matrices telles que l'addition, la soustraction et la multiplication sur un tableau 2D donné en utilisant la programmation C++. Vous allez également apprendre à manipuler et à utiliser efficacement les tableaux.
Création du fichier de programme C++
Créez un nouveau fichier nommé matrix_operations.cpp dans le répertoire ~/project. Cela peut être fait en utilisant la commande suivante dans le terminal.
touch ~/project/matrix_operations.cpp
Inclusion des bibliothèques requises et définition de la fonction principale
La première étape de notre programme C++ consiste à inclure les bibliothèques nécessaires pour les opérations d'entrée/sortie et le nettoyage de la console. Après cela, configurez la fonction principale de votre programme C++. Vous pouvez utiliser le code suivant comme modèle.
#include<iostream.h>
#include<conio.h>
int main()
{
clrscr();
// Votre code ici
getch();
return 0;
}
Addition de deux matrices
Dans cette étape, nous allons créer un cas pour effectuer l'addition de deux matrices. Le programme C++ demandera à l'utilisateur d'entrer l'ordre ou les dimensions des deux matrices (doivent être m*n et o*p).
Si les dimensions des matrices ne sont pas les mêmes, le programme renverra un message d'erreur. Ensuite, entrez les éléments des matrices et ajoutez-les. Le code final devrait ressembler à ceci.
//ADDITION
case 1:
cout<<"\nEntrez l'ordre de la matrice a (doit être m*n) : "<<endl;
cin>>m;
cout<<"* \n";
cin>>n;
cout<<"Entrez l'ordre de la matrice b (doit être o*p) : "<<endl;
cin>>o;
cout<<"* \n";
cin>>p;
if (m==o&&n==p)
{
cout<<"Addition possible "<<endl;
}
else
{
cout<<"Addition impossible ";
l=0;
}
if(l)
{
cout<<"\n\nEntrez les éléments de la matrice 1 : "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Les éléments de la matrice 1 sont : ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nEntrez les éléments de la matrice 2 : "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Les éléments de la matrice 2 sont : ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nAddition :\nc=a+b=";
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<c[i][j]<<" ";
}
}
break;
Soustraction de deux matrices
Dans cette étape, nous allons créer un cas pour effectuer la soustraction de deux matrices. Le programme C++ demandera à l'utilisateur d'entrer l'ordre ou les dimensions des deux matrices (doivent être m*n et o*p).
Si les dimensions des matrices ne sont pas les mêmes, le programme renverra un message d'erreur. Ensuite, entrez les éléments des matrices et soustrayez-les. Le code final devrait ressembler à ceci.
//SUBTRACTION
case 2:
cout<<"\nEntrez l'ordre de la matrice a (doit être m*n) : "<<endl;
cin>>m;
cout<<"* \n";
cin>>n;
cout<<"Entrez l'ordre de la matrice b (doit être o*p) : "<<endl;
cin>>o;
cout<<"* \n";
cin>>p;
if (m==o&&n==p)
{
cout<<"Soustraction possible "<<endl;
}
else
{
cout<<"Soustraction impossible ";
l=0;
}
if(l)
{
cout<<"\n\nEntrez les éléments de la matrice 1 : "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Les éléments de la matrice 1 sont : ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nEntrez les éléments de la matrice 2 : "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Les éléments de la matrice 2 sont : ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nSoustraction :\nc=a - b=";
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
c[i][j]=a[i][j]-b[i][j];
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<c[i][j]<<" ";
}
}
break;
Multiplication de deux matrices
Dans cette étape, nous allons créer un cas pour effectuer la multiplication de deux matrices. Le programme C++ demandera à l'utilisateur d'entrer l'ordre ou les dimensions des deux matrices (doivent être m*n et o*p).
Si les dimensions des matrices ne sont pas compatibles, le programme renverra un message d'erreur. Ensuite, entrez les éléments des matrices et multipliez-les. Le code final devrait ressembler à ceci.
//MULTIPLICATION
case 3:
cout<<"\nEntrez l'ordre de la matrice a (doit être m*n) : "<<endl;
cin>>m;
cout<<"* \n";
cin>>n;
cout<<"Entrez l'ordre de la matrice b (doit être o*p) : "<<endl;
cin>>o;
cout<<"* \n";
cin>>p;
if (n==o)
{
cout<<"Multiplication possible "<<endl;
}
else
{
cout<<"Multiplication impossible ";
l=0;
}
if(l)
{
cout<<"\n\nEntrez les éléments de la matrice 1 : "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Les éléments de la matrice 1 sont : ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nEntrez les éléments de la matrice 2 : "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Les éléments de la matrice 2 sont : ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nMultiplication :\nc=aXb=";
for (i=1;i<=m;i++)
{
for (j=1;j<=p;j++)
{
c[i][j]=0;
for (int k=1;k<=n;k++)
{
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<c[i][j]<<" ";
}
}
break;
Exécution du programme C++
Vous pouvez exécuter le fichier matrix_operations.cpp en le compilant avec la commande suivante dans le terminal :
g++ ~/project/matrix_operations.cpp -o matrix && ./matrix
Vous devrez peut-être remplacer matrix_operations.cpp par le nom que vous avez utilisé pour votre fichier de programme C++.
En supposant que votre code donne la sortie attendue, vous devriez être en mesure de voir une invite demandant un numéro de cas (1 pour l'Addition, 2 pour la Soustraction et 3 pour la Multiplication). Après avoir entré votre choix, le programme vous demandera d'entrer des matrices en fonction de l'opération choisie.
Code complet du programme C++
Voici le code complet pour notre fichier de programme matrix_operations.cpp.
#include<iostream.h>
#include<conio.h>
int main()
{
clrscr();
int a[50][50],b[50][50],c[50][50],i,j,m,n,o,p,l=1,r;
cout<<"Entrez le cas :\n";
cin>>r;
switch(r)
{
//ADDITION
case 1:
cout<<"\nEntrez l'ordre de la matrice a (doit être m*n) : "<<endl;
cin>>m;
cout<<"*\n";
cin>>n;
cout<<"Entrez l'ordre de la matrice b (doit être o*p) : "<<endl;
cin>>o;
cout<<"*\n";
cin>>p;
if (m==o&&n==p)
{
cout<<"Addition possible "<<endl;
}
else
{
cout<<"Addition impossible ";
l=0;
}
if(l)
{
cout<<"\n\nEntrez les éléments de la matrice 1 : "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Les éléments de la matrice 1 sont : ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nEntrez les éléments de la matrice 2 : "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Les éléments de la matrice 2 sont : ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nAddition :\nc=a+b=";
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<c[i][j]<<" ";
}
}
break;
//SUBTRACTION
case 2:
cout<<"\nEntrez l'ordre de la matrice a (doit être m*n) : "<<endl;
cin>>m;
cout<<"*\n";
cin>>n;
cout<<"Entrez l'ordre de la matrice b (doit être o*p) : "<<endl;
cin>>o;
cout<<"*\n";
cin>>p;
if (m==o&&n==p)
{
cout<<"Soustraction possible "<<endl;
}
else
{
cout<<"Soustraction impossible ";
l=0;
}
if(l)
{
cout<<"\n\nEntrez les éléments de la matrice 1 : "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Les éléments de la matrice 1 sont : ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nEntrez les éléments de la matrice 2 : "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Les éléments de la matrice 2 sont : ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nSoustraction :\nc=a-b=";
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
c[i][j]=a[i][j]-b[i][j];
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<c[i][j]<<" ";
}
}
break;
//MULTIPLICATION
case 3:
cout<<"\nEntrez l'ordre de la matrice a (doit être m*n) : "<<endl;
cin>>m;
cout<<"*\n";
cin>>n;
cout<<"Entrez l'ordre de la matrice b (doit être o*p) : "<<endl;
cin>>o;
cout<<"*\n";
cin>>p;
if (n==o)
{
cout<<"Multiplication possible "<<endl;
}
else
{
cout<<"Multiplication impossible ";
l=0;
}
if(l)
{
cout<<"\n\nEntrez les éléments de la matrice 1 : "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Les éléments de la matrice 1 sont : ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nEntrez les éléments de la matrice 2 : "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Les éléments de la matrice 2 sont : ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nMultiplication :\nc=aXb=";
for (i=1;i<=m;i++)
{
for (j=1;j<=p;j++)
{
c[i][j]=0;
for (int k=1;k<=n;k++)
{
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<c[i][j]<<" ";
}
}
break;
// cas par défaut
default:
cout<<"Mauvais choix";
}
getch();
return 0;
}
Résumé
Dans ce laboratoire, vous avez appris à effectuer diverses opérations sur des matrices à l'aide d'un tableau 2D en utilisant le langage de programmation C++. Vous avez également appris à manipuler et à utiliser des tableaux. Vous devriez maintenant avoir une bonne compréhension du fonctionnement des matrices en programmation C++.



