Matrixoperationen in C++

C++Beginner
Jetzt üben

Einführung

In diesem Lab werden Sie lernen, wie Sie verschiedene Matrixoperationen wie Addition, Subtraktion und Multiplikation auf einem gegebenen 2D-Array mit C++ programmieren. Sie werden auch lernen, wie Sie Arrays effektiv manipulieren und verwenden.

Erstellen der C++-Programmdatei

Erstellen Sie in das Verzeichnis ~/project eine neue Datei mit dem Namen matrix_operations.cpp. Dies können Sie mit dem folgenden Befehl in der Konsole tun.

touch ~/project/matrix_operations.cpp

Einbinden erforderlicher Bibliotheken und Festlegen der Hauptfunktion

Der erste Schritt in unserem C++-Programm ist es, die für die Eingabe-/Ausgabeverfahren erforderlichen Bibliotheken einzubinden und die Konsole zu leeren. Danach legen Sie die Hauptfunktion für Ihr C++-Programm fest. Sie können den folgenden Code als Vorlage verwenden.

#include<iostream.h>
#include<conio.h>

int main()
{
    clrscr();
    // Ihr Code hier
    getch();
    return 0;
}

Addition von 2 Matrizen

In diesem Schritt werden wir einen Fall erstellen, um die Addition von zwei Matrizen durchzuführen. Das C++-Programm wird den Benutzer bitten, die Ordnung oder Dimensionen der beiden Matrizen einzugeben (müssen m*n und o*p sein).

Wenn die Dimensionen der Matrizen nicht übereinstimmen, gibt das Programm eine Fehlermeldung zurück. Anschließend werden die Elemente der Matrizen eingegeben und addiert. Der endgültige Code sollte wie folgt aussehen.

//ADDITION
case 1:
    cout<<"\nGeben Sie die Ordnung der Matrix a (muss m*n sein): "<<endl;
    cin>>m;
    cout<<"* \n";
    cin>>n;
    cout<<"Geben Sie die Ordnung der Matrix b (muss o*p sein): "<<endl;
    cin>>o;
    cout<<"* \n";
    cin>>p;
    if (m==o&&n==p)
    {
        cout<<"Addition möglich "<<endl;
    }
    else
    {
        cout<<"Addition nicht möglich ";
        l=0;
    }

    if(l)
    {
        cout<<"\n\nGeben Sie die Elemente der Matrix 1 ein: "<<endl;
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
                cin>>a[i][j];
        }
        cout<<"Elemente der Matrix 1 sind: ";
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<a[i][j]<<" ";
        }
        cout<<"\nGeben Sie die Elemente der Matrix 2 ein: "<<endl;
        for (i=1;i<=o;i++)
        {
            for (j=1;j<=p;j++)
                cin>>b[i][j];
        }
        cout<<"Elemente der Matrix 2 sind: ";
        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;

Subtraktion von 2 Matrizen

In diesem Schritt werden wir einen Fall erstellen, um die Subtraktion von zwei Matrizen durchzuführen. Das C++-Programm wird den Benutzer bitten, die Ordnung oder Dimensionen der beiden Matrizen einzugeben (müssen m*n und o*p sein).

Wenn die Dimensionen der Matrizen nicht übereinstimmen, gibt das Programm eine Fehlermeldung zurück. Anschließend werden die Elemente der Matrizen eingegeben und subtrahiert. Der endgültige Code sollte wie folgt aussehen.

//SUBTRACTION
case 2:
    cout<<"\nGeben Sie die Ordnung der Matrix a (muss m*n sein): "<<endl;
    cin>>m;
    cout<<"* \n";
    cin>>n;
    cout<<"Geben Sie die Ordnung der Matrix b (muss o*p sein): "<<endl;
    cin>>o;
    cout<<"* \n";
    cin>>p;
    if (m==o&&n==p)
    {
        cout<<"Subtraktion möglich "<<endl;
    }
    else
    {
        cout<<"Subtraktion nicht möglich ";
        l=0;
    }

    if(l)
    {
        cout<<"\n\nGeben Sie die Elemente der Matrix 1 ein: "<<endl;
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
                cin>>a[i][j];
        }
        cout<<"Elemente der Matrix 1 sind: ";
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<a[i][j]<<" ";
        }
        cout<<"\nGeben Sie die Elemente der Matrix 2 ein: "<<endl;
        for (i=1;i<=o;i++)
        {
            for (j=1;j<=p;j++)
                cin>>b[i][j];
        }
        cout<<"Elemente der Matrix 2 sind: ";
        for (i=1;i<=o;i++)
        {
            cout<<endl;
            for (j=1;j<=p;j++)
                cout<<b[i][j]<<" ";
        }
        cout<<"\n\n\nSubtraktion:\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;

Multiplikation von 2 Matrizen

In diesem Schritt werden wir einen Fall erstellen, um die Multiplikation von zwei Matrizen durchzuführen. Das C++-Programm wird den Benutzer bitten, die Ordnung oder Dimensionen der beiden Matrizen einzugeben (müssen m*n und o*p sein).

Wenn die Dimensionen der Matrizen nicht kompatibel sind, gibt das Programm eine Fehlermeldung zurück. Anschließend werden die Elemente der Matrizen eingegeben und multipliziert. Der endgültige Code sollte wie folgt aussehen.

//MULTIPLICATION
case 3:
    cout<<"\nGeben Sie die Ordnung der Matrix a (muss m*n sein): "<<endl;
    cin>>m;
    cout<<"* \n";
    cin>>n;
    cout<<"Geben Sie die Ordnung der Matrix b (muss o*p sein): "<<endl;
    cin>>o;
    cout<<"* \n";
    cin>>p;
    if (n==o)
    {
        cout<<"Multiplikation möglich "<<endl;
    }
    else
    {
        cout<<"Multiplikation nicht möglich ";
        l=0;
    }

    if(l)
    {
        cout<<"\n\nGeben Sie die Elemente der Matrix 1 ein: "<<endl;
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
                cin>>a[i][j];
        }
        cout<<"Elemente der Matrix 1 sind: ";
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<a[i][j]<<" ";
        }
        cout<<"\nGeben Sie die Elemente der Matrix 2 ein: "<<endl;
        for (i=1;i<=o;i++)
        {
            for (j=1;j<=p;j++)
                cin>>b[i][j];
        }
        cout<<"Elemente der Matrix 2 sind: ";
        for (i=1;i<=o;i++)
        {
            cout<<endl;
            for (j=1;j<=p;j++)
                cout<<b[i][j]<<" ";
        }
        cout<<"\n\n\nMultiplikation:\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;

Ausführen des C++-Programms

Sie können die Datei matrix_operations.cpp ausführen, indem Sie sie im Terminal mit dem folgenden Befehl kompilieren:

g++ ~/project/matrix_operations.cpp -o matrix && ./matrix

Sie müssen möglicherweise matrix_operations.cpp durch den Namen ersetzen, den Sie für Ihre C++-Programmdatei verwendet haben.

Angenommen, Ihr Code liefert die erwarteten Ergebnisse, sollten Sie eine Aufforderung sehen, eine Fallnummer einzugeben (1 für Addition, 2 für Subtraktion und 3 für Multiplikation). Nachdem Sie Ihre Wahl getroffen haben, wird das Programm Sie bitten, Matrizen basierend auf der gewählten Operation einzugeben.

Vollständiger C++-Programmcode

Hier ist der vollständige Code für unsere matrix_operations.cpp-Programmdatei.

#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<<"Geben Sie den Fall ein:\n";
    cin>>r;
    switch(r)
    {
        //ADDITION
        case 1:
            cout<<"\nGeben Sie die Ordnung der Matrix a (muss m*n sein): "<<endl;
            cin>>m;
            cout<<"*\n";
            cin>>n;
            cout<<"Geben Sie die Ordnung der Matrix b (muss o*p sein): "<<endl;
            cin>>o;
            cout<<"*\n";
            cin>>p;
            if (m==o&&n==p)
            {
                cout<<"Addition möglich "<<endl;
            }
            else
            {
                cout<<"Addition nicht möglich ";
                l=0;
            }

            if(l)
            {
                cout<<"\n\nGeben Sie die Elemente der Matrix 1 ein: "<<endl;
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                        cin>>a[i][j];
                }
                cout<<"Elemente der Matrix 1 sind: ";
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<a[i][j]<<" ";
                }
                cout<<"\nGeben Sie die Elemente der Matrix 2 ein: "<<endl;
                for (i=1;i<=o;i++)
                {
                    for (j=1;j<=p;j++)
                        cin>>b[i][j];
                }
                cout<<"Elemente der Matrix 2 sind: ";
                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<<"\nGeben Sie die Ordnung der Matrix a (muss m*n sein): "<<endl;
            cin>>m;
            cout<<"*\n";
            cin>>n;
            cout<<"Geben Sie die Ordnung der Matrix b (muss o*p sein): "<<endl;
            cin>>o;
            cout<<"*\n";
            cin>>p;
            if (m==o&&n==p)
            {
                cout<<"Subtraktion möglich "<<endl;
            }
            else
            {
                cout<<"Subtraktion nicht möglich ";
                l=0;
            }

            if(l)
            {
                cout<<"\n\nGeben Sie die Elemente der Matrix 1 ein: "<<endl;
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                        cin>>a[i][j];
                }
                cout<<"Elemente der Matrix 1 sind: ";
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<a[i][j]<<" ";
                }
                cout<<"\nGeben Sie die Elemente der Matrix 2 ein: "<<endl;
                for (i=1;i<=o;i++)
                {
                    for (j=1;j<=p;j++)
                        cin>>b[i][j];
                }
                cout<<"Elemente der Matrix 2 sind: ";
                for (i=1;i<=o;i++)
                {
                    cout<<endl;
                    for (j=1;j<=p;j++)
                        cout<<b[i][j]<<" ";
                }
                cout<<"\n\n\nSubtraktion:\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<<"\nGeben Sie die Ordnung der Matrix a (muss m*n sein): "<<endl;
            cin>>m;
            cout<<"*\n";
            cin>>n;
            cout<<"Geben Sie die Ordnung der Matrix b (muss o*p sein): "<<endl;
            cin>>o;
            cout<<"*\n";
            cin>>p;
            if (n==o)
            {
                cout<<"Multiplikation möglich "<<endl;
            }
            else
            {
                cout<<"Multiplikation nicht möglich ";
                l=0;
            }

            if(l)
            {
                cout<<"\n\nGeben Sie die Elemente der Matrix 1 ein: "<<endl;
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                        cin>>a[i][j];
                }
                cout<<"Elemente der Matrix 1 sind: ";
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<a[i][j]<<" ";
                }
                cout<<"\nGeben Sie die Elemente der Matrix 2 ein: "<<endl;
                for (i=1;i<=o;i++)
                {
                    for (j=1;j<=p;j++)
                        cin>>b[i][j];
                }
                cout<<"Elemente der Matrix 2 sind: ";
                for (i=1;i<=o;i++)
                {
                    cout<<endl;
                    for (j=1;j<=p;j++)
                        cout<<b[i][j]<<" ";
                }
                cout<<"\n\n\nMultiplikation:\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;
        // default case
        default:
            cout<<"Falsche Wahl";
    }
    getch();
    return 0;
}

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie verschiedene Matrizenoperationen auf einem gegebenen 2D-Array mit der C++-Programmierung durchführen. Sie haben auch gelernt, wie Sie Arrays manipulieren und verwenden. Sie sollten jetzt einen guten Überblick darüber haben, wie Matrizen in der C++-Programmierung funktionieren.