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.



