Paja92 Temat założony przez niniejszego użytkownika |
Konstruktor w klasie. Klasa zespolona » 2014-01-02 14:04:05 Witam Chcę utworzyć klasę liczb zespolonych na podstawie której utworzę zespolone macierze. Problem jaki się pojawia to niemożliwość skompilowania tego programu. Na podstawie błędów które wyrzuca wnioskuję ze nie do końca rozumiem o co chodzi z konstruktorem, tworzeniem z niego obiektów na którym można było by prowadzić obliczenia. Czy ktoś z użytkowników mógł by rozwiązać mój problem albo nakierować na jakieś mądre strony gdzie by było wyjaśnione jak w moim przypadku poprawnie to zrobić ? Oto plik źródłowy : #include <conio.h> #include <complex> #include <iostream> #include <cmath> using namespace std;
class Zesp { private: double real; double imag; public: Zesp( double re, double im ) { real = re; imag = im; } Zesp() { real = 0.0; imag = 0.0; } Zesp wprowadz( double, double ); Zesp dod( Zesp z1, Zesp z2 ); Zesp dodmac( Zesp ** AA, Zesp ** BB, int r, int c ); void wysmac( Zesp ** mac, int r, int c ); friend ostream & operator <<( ostream & wy, Zesp & z ); };
Zesp::Zesp dod( Zesp z1, Zesp z2 ) { Zesp zesp; zesp.real = z1.real + z2.real; zesp.imag = z1.imag + z2.imag; return zesp; }
Zesp::ostream & operator <<( ostream & wy, Zesp & z ) { wy << "(" << z.real << "," << z.imag << ")"; return wy; }
Zesp::Zesp ** dodmac( Zesp ** AA, Zesp ** BB, int r, int c ) { Zesp ** CC; CC = new Zesp *[ r ]; for( int i = 0; i < r; i++ ) CC[ i ] = new Zesp[ c ]; for( int i = 0; i < c; i++ ) for( int j = 0; j < c; j++ ) CC[ i ][ j ] = dod( AA[ i ][ j ], BB[ i ][ j ] ); return CC; delete CC; }
void Zesp::Zesp wysmac( Zesp ** mac, int r, int c )
{ for( int i = 0; i < r; i++ ) { for( int j = 0; j < c; j++ ) { cout << " " << mac[ i ][ j ].real << "+" << mac[ i ][ j ].imag << "i"; } } cout << endl; }
int main() { int row, col; cout << "\n podaj wymiar macierzy row i col"; cin >> row; cin >> col; Zesp ** A, ** B, ** C, ** D; A = new Zesp *[ row ]; B = new Zesp *[ row ]; for( int i = 0; i < row; i++ ) { A[ i ] = new Zesp[ col ]; B[ i ] = new Zesp[ col ]; } Zesp zz( re, im ); for( int i = 0; i < row; i++ ) for( int j = 0; j < col; j++ ) { cout << "\n podaj rzeczywista i urojona "; cin >> re >> im; zz.re; zz.im; zz = wprowadz( re, im ); A[ i ][ j ] = zz; } for( int i = 0; i < row; i++ ) for( int j = 0; j < col; j++ ) { cout << "\n podaj rzeczywista i urojona "; cin >> re >> im; zz =( re, im ); zz = wprowadz( re, im ); B[ i ][ j ] = zz; } cout << "A="; wysmac( A, row, col ); cout << "\n"; cout << "B="; wysmac( B, row, col ); cout << "\n"; cout << "C= " << "suma macierzy"; C = dodmac( A, B, row, col ); wysmac( C, row, col ); cout << "\n"; delete A; delete B; getch(); return 0; }
Z góry dziękuje za każdą wskazówkę . Pozdrawiam |
|
DejaVu |
» 2014-01-02 14:09:42 Nie wkleiłeś błędów kompilacji. |
|
Paja92 Temat założony przez niniejszego użytkownika |
» 2014-01-02 14:32:21 24 [Error] 'Zesp::Zesp' names the constructor, not the type 33 [Error] 'ostream' in 'class Zesp' does not name a type 39 [Error] 'Zesp::Zesp' names the constructor, not the type 52 [Error] expected initializer before 'wysmac' Przepraszam za pominięcie :) |
|
kampar |
» 2014-01-02 14:47:15 powtórz sobie definiowanie metod klasy. Np. zamiast Zesp::Zesp dod powinno być Zesp Zesp::dod |
|
Paja92 Temat założony przez niniejszego użytkownika |
» 2014-01-02 16:14:19 Faktycznie działa natomiast Twoja podpowiedź nic mi nie daje niestety. Ale bardzo dziękuję :) są tylko dwa już : 39 [Error] expected initializer before '*' token 52 [Error] expected initializer before 'Zesp' |
|
pekfos |
» 2014-01-02 16:16:26 Jak wyżej. Zamiast Zesp::Zesp ** dodmac , ma być Zesp ** Zesp::dodmac . |
|
Paja92 Temat założony przez niniejszego użytkownika |
» 2014-01-02 21:36:24 Dziękuje bardzo za pomoc :) dalej są błędy ale innego typu już może sobie z nimi poradzę :) |
|
« 1 » |