Opérations sur les matrices en C++

C++Beginner
Pratiquer maintenant

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++.