Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dynamiczna alokacja

Ostatnio zmodyfikowano 2009-03-21 15:26
Autor Wiadomość
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
C/C++
#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;
}
P-4882
DejaVu
» 2009-03-21 15:21:16
Nie zainicjowałeś zmiennych w konstruktorze kopiującym:
C/C++
matrix( matrix const & kopia )
    : w( kopia.w )
    , k( kopia.k )
{
P-4892
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 ;-)
P-4894
« 1 »
  Strona 1 z 1