Dynamiczna alokacja
Ostatnio zmodyfikowano 2009-03-21 15:26
Riddle Temat założony przez niniejszego użytkownika |
Dynamiczna alokacja » 2009-03-21 13:16:31 Witam. Mam do napisania dość duży program dotyczący tablic dwuwymiarowych. Pojawił się problem z przeładowaniem operatorów wejścia i wyjścia (możliwe, że spowodowany błędami w konstruktorach). Generalnie zrobiłem sobie krótszy program z klasą która mnie interesuje i przeładowaniem tylko operatorów >> oraz << . Sam main ma tylko wczytywać macierz i wypisywać ją na ekranie. Prosiłbym o wskazanie błędów. Z góry dziękuję i pozdrawiam #include <iostream>
using namespace std;
class matrix { int w, k; int ** wsk; public: matrix( void ) { this->w = 0; this->k = 0; this->wsk = 0; }; matrix( int wiersze, int kolumny ) : w( wiersze ) , k( kolumny ) { wsk = new int *[ w ]; for( int i = 0; i < w; i++ ) { wsk[ i ] = new int[ k ]; }; }; matrix( matrix const & kopia ) { int i, j; wsk = new int *[ w ]; for( i = 0; i < k; i++ ) wsk[ i ] = new int[ k ]; for( i = 0; i < k; i++ ) for( j = 0; j < w; j++ ) wsk[ i ][ j ] = kopia.wsk[ i ][ j ]; }; ~matrix() { for( int i = 0; i < w; ++i ) delete[] wsk[ i ]; delete[] wsk; }; friend istream & operator >>( istream & in, matrix & nowa ); friend ostream & operator <<( ostream & out, const matrix kopia ); };
istream & operator >>( istream & in, matrix & nowa ) { int i, j; cout << "Podaj liczbe wierszy :"; in >> nowa.w; cout << "Podaj liczbe kolumn :"; in >> nowa.k; nowa.wsk = new int *[ nowa.w ]; for( i = 0; i < nowa.w; i++ ) { nowa.wsk[ i ] = new int[ nowa.k ]; }; for( i = 0; i < nowa.w; i++ ) { for( j = 0; j < nowa.k; j++ ) { cout << "Podaj element [" << i + 1 << "," << j + 1 << "] :"; in >> nowa.wsk[ i ][ j ]; }; }; return in; };
ostream & operator <<( ostream & out, matrix kopia ) { int i, j; for( int i = 0; i < kopia.w; i++ ) { out << "| "; for( int j = 0; j < kopia.k; j++ ) { out << kopia.wsk[ i ][ j ]; }; out << " |" << endl; }; return out; };
int main() { matrix k; cin >> k; cout << "Macierz nasza to:" << k; cout << k; system( "PAUSE" ); return EXIT_SUCCESS; } |
|
DejaVu |
» 2009-03-21 15:21:16 Nie zainicjowałeś zmiennych w konstruktorze kopiującym: matrix( matrix const & kopia ) : w( kopia.w ) , k( kopia.k ) {
|
|
Riddle Temat założony przez niniejszego użytkownika |
» 2009-03-21 15:26:43 O wielkie dzięki :D Teraz działa jak chciałem. Pozdrawiam i miłego dnia ;-) |
|
« 1 » |