000
08.01.2009, 12:51 Uhr
~Dolphon
Gast
|
Hi,
ich bin gerade dabei ein Programm für die Matrizenmultiplikation zuschreiben. Allerdings habe ich ein Problem bei der Berechnung von MatrixC. Der erste Wert ist noch richtig. Alle weiteren sind falsch. Vllt. kann mir hier jemand helfen.
Hier der Code:
C++: |
#include "stdafx.h" #include <iostream> #include <cmath> #include <conio.h> using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { int as,az,bs,bz; const int max = 2; double matrixa [max][max]; double matrixb [max][max]; double matrixc [max][max]; //Dimensionseingabe
cout<<"Bitte geben sie die Dimension az x as der Matrix A ein.\n\n az: "; cin>>az; cout<<"\n as: "; cin>>as; cout<<"\n Bitte geben sie die Dimension bz x bs der Matrix B ein.\n bz: "; cin>>bz;
if (as!=bz) { cout<<"\nSpalten von A muessen dieselbe Anzahl wie die Zeilen von B sein!Fehler\n"; }
cout<<"\n bs: "; cin>>bs;
//Einlesen von Matrix A
cout << "\n Bitte geben Sie nun die Werte fuer Matrix A ein " << endl; for (int i = 0; i < az; i++) { cout << "Zeile " << i+1 <<"=" ; for (int j = 0; j < as; j++) cin >> matrixa[i][j]; }
// Matrize A zur kontrolle ausgeben for (int i = 0; i < az; i++) { cout << "\n"; for (int j = 0; j < as; j++) cout << " " << matrixa[i][j]; }
// Einlesen von Matrix B
cout << "\n Bitte geben Sie nun die Werte fuer Matrix B ein " << endl;
for (int i = 0; i < bz; i++) { cout << "Zeile " << i+1 <<"=" ; for (int j = 0; j < bs; j++) cin >> matrixb[i][j]; }
// Matrize B zur kontrolle ausgeben for (int i = 0; i < bz; i++) { cout << "\n"; for (int j = 0; j < bs; j++) cout << " " << matrixb[i][j]; }
//Matrix C berechnen
for(int f=0; f < az; f++) for(int g=0; g < bs; g++) //matrixc[f][g] += matrixa[f][g] * matrixb[f][g]; matrixc[f][g] = ((matrixa[f][g]*matrixb[f][g])+(matrixa[f][g+1]*matrixb[f+1][g]));
// Matrix C ausgeben
cout << "\n Das Ergebnis der Multipilkation ist: " << endl; for (int i = 0; i < az; i++) { cout << "\n"; for (int j = 0; j < bs; j++) cout << " " << matrixc[i][j]; }
getch(); return 0; }
|
|