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

Problem z dynamiczną dwuwymiarową tablicą.

Ostatnio zmodyfikowano 2013-07-20 19:54
Autor Wiadomość
Bimbol
Temat założony przez niniejszego użytkownika
» 2013-07-20 19:17:18
Szczerze, to już nie mam pojęcia jak to zrobić.
Można prosić o jakiś przykład?
P-88440
pekfos
» 2013-07-20 19:24:19
C/C++
// !To Twój zły kod!
void ChangeSize( unsigned Index1, unsigned Index2 )
{
    // Tworzymy tymczasowa tablice
    int ** Array = new int *[ Index1 ];
    for( unsigned i = 0; i < Index1; ++i )
         Array[ i ] = new int[ Index2 ];
   
    for( unsigned i = 0; i < Index1; ++i )
    {
        memcpy( Array[ i ], m_Table[ i ], sizeof( int ) * Index2 ); //zabezpiecz przed wyjściem poza tablice
        delete[] m_Table[ i ];
    }
   
    memcpy( Array, m_Table, sizeof( int ) * Index1 ); //wywal to
    delete[] m_Table;
   
    m_Table = Array;
   
    m_Index1 = Index1;
    m_Index2 = Index2;
}
P-88441
Bimbol
Temat założony przez niniejszego użytkownika
» 2013-07-20 19:54:41
Dzięki wielkie teraz działa :)

Gdyby ktoś kiedyś potrzebował:

C/C++
void ChangeSize( unsigned Index1, unsigned Index2 )
{
    // Tworzymy tymczasowa tablice
    int ** Array = new int *[ Index1 ];
    for( unsigned i = 0; i < Index1; ++i )
         Array[ i ] = new int[ Index2 ];
   
    // Kopiowanie oraz kasowanie
    if( Index1 < m_Index2 )
    for( unsigned i = 0; i < Index1; ++i )
    {
        if( Index2 < m_Index2 )
             memcpy( Array[ i ], m_Table[ i ], sizeof( int ) * Index2 );
        else
             memcpy( Array[ i ], m_Table[ i ], sizeof( int ) * m_Index2 );
       
        delete[] m_Table[ i ];
    }
    else
    for( unsigned i = 0; i < m_Index1; ++i )
    {
        if( Index2 < m_Index2 )
             memcpy( Array[ i ], m_Table[ i ], sizeof( int ) * Index2 );
        else
             memcpy( Array[ i ], m_Table[ i ], sizeof( int ) * m_Index2 );
       
        delete[] m_Table[ i ];
    }
   
    delete[] m_Table;
   
    // Ponownie przypisanie
    m_Table = Array;
   
    m_Index1 = Index1;
    m_Index2 = Index2;
   
}
P-88447
1 « 2 »
Poprzednia strona Strona 2 z 2