000
20.01.2008, 01:51 Uhr
Krawall
|
Moin, sollen nen Programm für Matrizenberechnung schreiben, hab versucht alle Vorgaben in das Programm reinzuschreiben soweit ich das mit meinem Wissen konnte. Wollte nun erstmal kompiliern, fehler entfernen etc um es überhaupt mal zum laufen zu kriegen um zu sehn wo denkfehler sind etc, aber nun sitz ich hier seit fast ner halben stunde an der selben stelle und komm einfach nicht drauf...hilfe wäre nett. (wenn lust/zeit da ist, wäre es auch nett wenn einer mal grob drüberschaut und etwaige entdeckte denkfehler mitteilt) thx
ps...ja ich weiss die fehlermeldungen zeigen mir triviale fehler auf, aber ich kriegs net gebacken...irgendwie steh ich da aufm schlauch. n und m sollte der ja eigentlich kennen bzw auf "feld" sollte er zugreifen können, weil die friend funktion ja auf die klasse zugreifen kann. das mit dem =-operator versteh ich auch nciht so ganz (bzw die funktion dafür ist auch noch nicht fertig gestellt)
code:
C++: |
#include <iostream> #include <cmath> #include <cstdlib> #include <iomanip> using namespace std;
class Matrix { private: int m; int n; double** feld; public: void mMatrix(int ndim, int mdim); ~Matrix(); Matrix& operator = (Matrix& X); Matrix operator + (Matrix& X); Matrix operator * (Matrix& X); void transp(Matrix& C); friend istream& operator >> (istream& is, Matrix& X); friend ostream& operator << (ostream& os, Matrix& X);
};
void Matrix::mMatrix(int ndim, int mdim) { n=ndim+1; m=mdim+1; feld = new double* [n]; for (int i=0;i<n;i++) { feld[i] = new double [m]; } for (int j=0; j<n; j++) { for (int j=0; j<m; j++) { feld[i][j] = 0; } } }
Matrix::~Matrix() { for(int i=0; i<n; i++) { delete [] feld[i]; } delete [] feld; }
istream& operator >> (istream& is, Matrix& X) {
for (int i=1; i<n+1; i++) { for (int j=1; j<m+1; j++) { is >> X.feld[i][j]; } } return is; }
ostream& operator << (ostream& os, Matrix& X) {
for (int i=1; i<n+1; i++) { for (int j=1; j<m+1; j++) { os << setw(5) << X.feld[i][j]; } }
return os; }
Matrix Matrix&::operator = (Matrix& X) { return *this; }
Matrix Matrix::operator + (Matrix& A) { if(n==B.n && m==B.m) { for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { C.feld[i][j] = feld[i][j] + B.feld[i][j]; } } } else { cout << "Matrizen haben nicht dieselbe Groesse" << endl; } }
Matrix Matrix::operator * (Matrix& A) { if (m == B.n) { for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { for (int k=0; k<n; k++) { C.feld[i][j] += feld[i][k] * B.feld[k][j]; } } } } else { cout << "Dimensionen passen nicht zusammen" << endl; } }
void Matrix::transp(Matrix& C) { for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { C.feld[i][j] = feld[j][i]; } } }
int main() { int n; int m;
cout << "Dimensionen der 1. Matrix?" << endl; cout << "Zeilenlaenge n: " << endl; cin >> n; cout << "Spaltenlaenge m: " << endl; cin >> m;
Matrix A,B,C,D,E,F; A.mMatrix(n,m);
cout << "Dimensionen der 2. Matrix?" << endl; cout << "Zeilenlaenge n: " << endl; cin >> n; cout << "Spaltenlaenge m: " << endl; cin >> m;
B.mMatrix(n,m);
cout << A; endl; cout << B; endl;
C.mMatrix(n,m); D.mMatrix(n,m); E.mMatrix(n,m); F.mMatrix(n,m);
D = A+B; E = A*B; F = transp(A);
cout << "\n\n" << endl; cout << D; endl; cout << E; endl; cout << F; endl;
return 0; }
|
errorlog:
--------------------Configuration: Matrixklasse - Win32 Debug-------------------- Compiling... Matrixklasse.cpp Matrixklasse.cpp(58) : error C2065: 'n' : undeclared identifier Matrixklasse.cpp(59) : error C2065: 'm' : undeclared identifier \Matrixklasse.cpp(60) : error C2248: 'feld' : cannot access private member declared in class 'Matrix' CDokumente und Einstellungen\rita\Desktop\Matrixklasse.cpp(16) : see declaration of 'feld' \Matrixklasse.cpp(71) : error C2248: 'feld' : cannot access private member declared in class 'Matrix' Matrixklasse.cpp(16) : see declaration of 'feld' Matrixklasse.cpp(79) : error C2143: syntax error : missing ';' before '&' Matrixklasse.cpp(79) : error C2039: '=' : is not a member of '`global namespace'' Matrixklasse.cpp(79) : error C2061: syntax error : identifier 'Matrix' Matrixklasse.cpp(79) : error C2501: '=' : missing storage-class or type specifiers Matrixklasse.cpp(80) : error C2673: '=' : global functions do not have 'this' pointers Matrixklasse.cpp(80) : warning C4508: '=' : function should return a value; 'void' return type assumed Matrixklasse.cpp(85) : error C2143: syntax error : missing ';' before 'tag::id' Matrixklasse.cpp(85) : error C2501: 'Matrix' : missing storage-class or type specifiers Matrixklasse.cpp(85) : error C2371: 'Matrix' : redefinition; different basic types Matrixklasse.cpp(79) : see declaration of 'Matrix' Matrixklasse.cpp(85) : fatal error C1004: unexpected end of file found Error executing cl.exe.
Matrixklasse.exe - 13 error(s), 1 warning(s) Dieser Post wurde am 20.01.2008 um 01:54 Uhr von Krawall editiert. |