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

Ciąg liczb jako tablica dwuwymiarowa

Ostatnio zmodyfikowano 2014-04-07 19:07
Autor Wiadomość
OSA_PL
» 2014-04-07 11:39:33
Jak nie działa, jak działa...

C/C++
#include <cstdio>

void f( int * tab, int rozmiar );

int main()
{
    int tablica[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 };
    f( tablica, 27 );
    return 0;
}

void f( int * tab, int rozmiar )
{
    int ilosc_wierszy = rozmiar / 5 +(( rozmiar % 5 ) ? 1
        : 0 );
    int ** nowa_tablica = new int *[ ilosc_wierszy ];
   
    for( int i = 0; i < ilosc_wierszy; i++ )
    {
        if( i < rozmiar / 5 )
             nowa_tablica[ i ] = new int[ 5 ];
        else
             nowa_tablica[ i ] = new int[ rozmiar % 5 ];
       
    }
   
    for( int i = 0; i < rozmiar; i++ )
    {
        nowa_tablica[ i / 5 ][ i % 5 ] = tab[ i ];
    }
   
    /**********  Tutaj mozesz robic cos z ta tablica  **********/
   
    for( int i = 0; i < ilosc_wierszy; i++ )
    {
        for( int j = 0; j < 5; j++ )
        {
            if( i * 5 + j == rozmiar ) break;
           
            printf( "%3d", nowa_tablica[ i ][ j ] );
        }
        printf( "\n" );
    }
   
    /***********************************************************/
   
    for( int i = 0; i < ilosc_wierszy; i++ )
         delete[] nowa_tablica[ i ];
   
    delete[] nowa_tablica;
}
P-107825
Midas
Temat założony przez niniejszego użytkownika
» 2014-04-07 13:33:15
Faktycznie, mój błąd zrobiłem coś źle. Dzięki za pomoc ;D
P-107835
Midas
Temat założony przez niniejszego użytkownika
» 2014-04-07 14:58:15
Jeszcze mam pytanie, czy mógłbyś mi wyjaśnić ten zapis
C/C++
int ilosc_wierszy = rozmiar / 5 +(( rozmiar % 5 ) ? 1
    : 0 );
P-107842
DaiGyakusatsu
» 2014-04-07 15:23:36
C/C++
int ilosc_wierszy = rozmiar / 5 +(( rozmiar % 5 ) ? 1
    : 0 );
rozmiar / 5
 Dzieli zmienną rozmiar na 5 (bierze pod uwagę tylko część całkowitą)
C/C++
+(( rozmiar % 5 ) ? 1
    : 0 );
 I jeśli reszta dzielenia zmiennej rozmiar przez 5 będzie "prawdziwa" czyli większa lub równa 1 to dodaje do uzyskanego wcześniej wyniku z dzielenia 1 jeśli jest "fałszywa" czyli równa 0 to dodaje 0.
Jeśli wolisz to można ilość wierszy obliczyć czymś takim:
int ilosc_wierszy = std::ceil( rozmiar / 5.f );
P-107845
Midas
Temat założony przez niniejszego użytkownika
» 2014-04-07 19:07:27
Dzięki :D
P-107867
1 « 2 »
Poprzednia strona Strona 2 z 2