Matrix addition
-
Hallo habe folgendes Programm geschrieben zum addieren von zwei Matrizen.
Es gibt leider nicht die Werte für die Matrizen aus woran liegt dass?#include <iostream> using namespace std; int i, j; float Matrix1[3][3], Matrix2[3][3], Matrix3[3][3]; void MatrixEingabe(float Matrix1[3][3], unsigned int MatrixNr) { for (int i=0; i<3; ++i) { for (int j=0; j<3; ++j) { cout << "Matrix1" << MatrixNr << "[" << (i+1) << "," << (j+1) << "] = "; cin >> Matrix1[i][j]; } } } void MatrixEingabe2(float Matrix2[3][3], unsigned int MatrixNr) { for (int i=0; i<3; ++i) { for (int j=0; j<3; ++j) { cout << "Matrix2" << MatrixNr << "[" << (i+1) << "," << (j+1) << "] = "; cin >> Matrix2[i][j]; } } } void MatrixAddition(float Matrix3[3][3]) { for (int i=0; i<3; ++i) { for (int j=0; j<3; ++j) { int addition(float Matrix1, float Matrix2); } } } void MatrixAusgabe(float Matrix1[3][3], unsigned int MatrixNr) { for (i=0; i<3; i++) //Ausgabe Matrix2 { for(j=0; j<3; j++) { if (i==1 && j==0 || i==2 && j==0) { cout <<"\n" <<Matrix1<< " "; } else { cout <<Matrix1<<" "; } } } } void MatrixAusgabe2(float Matrix2[3][3], unsigned int MatrixNr) { for (i=0; i<3; i++) //Ausgabe Matrix2 { for(j=0; j<3; j++) { if (i==1 && j==0 || i==2 && j==0) { cout <<"\n" <<Matrix2<< " "; } else { cout <<Matrix2<<" "; } } } } void MatrixAusgabe3(float Matrix3[3][3], unsigned int MatrixNr) { for (i=0; i<3; i++) //Ausgabe Matrix2 { for(j=0; j<3; j++) { if (i==1 && j==0 || i==2 && j==0) { cout <<"\n" <<Matrix3<< " "; } else { cout <<Matrix3<<" "; } } } } int main () { MatrixEingabe(Matrix1,1); MatrixEingabe2(Matrix2,1); MatrixAddition(Matrix3); MatrixAusgabe(Matrix1,1); cout <<"\n" <<"+"<<"\n"; MatrixAusgabe2(Matrix2,1); cout <<"\n" <<"="<<"\n"; MatrixAusgabe3(Matrix3,1); system ("pause"); return 0; }hoffe es kann mir jemand helfen
mfg Hanuta
-
Warum benutzt du rohe float-Arrays für Matrizen? Evtl eignet sich std::valarray dafür viel besser

-
Compiliere immer mit allen Warnungsoptionen. Mein Compiler sagt zu deinem Programm:
test.cc:30: warning: unused parameter ‘Matrix3’ test.cc: In function ‘void MatrixAusgabe(float (*)[3], unsigned int)’: test.cc:46: warning: suggest parentheses around ‘&&’ within ‘||’ test.cc: At global scope: test.cc:40: warning: unused parameter ‘MatrixNr’ test.cc: In function ‘void MatrixAusgabe2(float (*)[3], unsigned int)’: test.cc:63: warning: suggest parentheses around ‘&&’ within ‘||’ test.cc: At global scope: test.cc:57: warning: unused parameter ‘MatrixNr’ test.cc: In function ‘void MatrixAusgabe3(float (*)[3], unsigned int)’: test.cc:80: warning: suggest parentheses around ‘&&’ within ‘||’ test.cc: At global scope: test.cc:74: warning: unused parameter ‘MatrixNr’ test.cc: In function ‘int main()’: test.cc:107: error: ‘system’ was not declared in this scopeIch mag jetzt nicht 100+ Zeilen durchlesen ohne gute Fehlerbeschreibung, aber ich bin mir ziemlich sicher, dass diese Warnungen etwas mit deinem Problem zu tun haben dürfen
.edit: Ok, nachdem ich dein Programm mal diagonal gelesen habe: Das sind nicht die einzigen Probleme, die dein Programm hat. Ehrlich gesagt ist fast jede Zeile die etwas macht entweder falsch oder schlecht.
-
soweit ich weiß, kann c++ kein system("pause")... probiere getchar() oder ähnliches
-
std::valarrayFTW! Es bietet auch den+-Operator an, was dir die ganze Sache mit Schleifen erspart. Zudem kann man die Ein-/Ausgabe auch überstd::foreachmachen.
-
Hallo Hanuta,
du scheinst das Prinzip von Funktionsparametern noch nicht ganz verstanden zu haben. Du brauchst nicht für jede der drei Matrizen eine eigene Funktion zu schreiben, sondern kannst einfach eine Funktion für alle drei Matrizen verwenden:
MatrixEingabe(Matrix1,1); MatrixEingabe(Matrix2,2); MatrixAddition(Matrix1, Matrix2, Matrix3); // <- diese Funktion mußt du ehe noch ausprogrammieren ;-) MatrixAusgabe(Matrix1,1); cout <<"\n" <<"+"<<"\n"; MatrixAusgabe(Matrix2,2); cout <<"\n" <<"="<<"\n"; MatrixAusgabe(Matrix3,3);Und um die einzelnen Matrizen-Einträge auszugeben, mußt du entsprechend wie bei der Eingabe vorgehen:
cout << Matrix[i][j];