Ciąg liczb jako tablica dwuwymiarowa
Ostatnio zmodyfikowano 2014-04-07 19:07
OSA_PL |
» 2014-04-07 11:39:33 Jak nie działa, jak działa... #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 ]; } 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; }
|
|
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 |
|
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 int ilosc_wierszy = rozmiar / 5 +(( rozmiar % 5 ) ? 1 : 0 ); |
|
DaiGyakusatsu |
» 2014-04-07 15:23:36 int ilosc_wierszy = rozmiar / 5 +(( rozmiar % 5 ) ? 1 : 0 ); rozmiar / 5 Dzieli zmienną rozmiar na 5 (bierze pod uwagę tylko część całkowitą) +(( 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 ); |
|
Midas Temat założony przez niniejszego użytkownika |
» 2014-04-07 19:07:27 Dzięki :D |
|
1 « 2 » |