nadanie wartości tablicy trójwymiarowej i i ich odczytanie
Ostatnio zmodyfikowano 2014-08-01 22:37
antonio12 Temat założony przez niniejszego użytkownika |
nadanie wartości tablicy trójwymiarowej i i ich odczytanie » 2014-08-01 17:15:02 Chciałem dla takiej tablicy double tab[10][5][30] nadać wartości dla każdego elementu a potem je odczytać. Mógłby ktoś pomóc. Próbowałem tak: #include <iostream> using namespace std; void ustawienie( double tab[ 10 ][ 5 ][ 30 ] );
int main() { double tab[ 10 ][ 5 ][ 30 ]; ustawienie( tab ); system( "pause" ); } void ustawienie( double tab[][ 5 ][ 30 ] ) { for( int i = 0; i < 1500; i++ ) { tab[ 10 ][ 5 ][ 30 ] = i; } for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 5; j++ ) { for( int k = 0; k < 30; k++ ) { cout << tab[ i ][ j ][ k ] << " = " << endl; } } } }
|
|
docentpp |
» 2014-08-01 17:26:50 Tutaj jest błąd !!!!! for( int i = 0; i < 1500; i++ ) { tab[ 10 ][ 5 ][ 30 ] = i; }
Po wykonaniu tej pętli wartość elementu [10][5][30] wynosi 1499. Innym elementom nie nadaje się jawnie określonych wartości. |
|
pekfos |
» 2014-08-01 17:28:42 for( int i = 0; i < 1500; i++ ) { tab[ 10 ][ 5 ][ 30 ] = i;
|
Zastanawiałeś się nad sensem tego? Wychodzisz poza tablicę w każdym wymiarze. A gdyby kompilator faktycznie miał być mądrzejszy od ciebie, to skąd miałby wiedzieć, w jaki konkretny sposób chcesz ją wypełnić..? |
|
michal11 |
» 2014-08-01 17:58:21 Może mała podpowiedz, wypisywanie i wpisywanie robi się prawie tak samo. |
|
antonio12 Temat założony przez niniejszego użytkownika |
» 2014-08-01 21:48:14 Jednak udało mi się coś zwojować, program robi to co chciałem, lecz wygląda on paskudnie bo ma sporo pętl w pętlach, co o nim powiecie: #include <iostream> using namespace std; void ustawienie( double tab[][ 5 ][ 30 ] ); void odczytaj( double tab[][ 5 ][ 30 ] );
int main() { double tab[ 10 ][ 5 ][ 30 ]; ustawienie( tab ); odczytaj( tab ); system( "pause" ); } void ustawienie( double tab[][ 5 ][ 30 ] ) { for( int z = 0; z < 1499; z++ ) { for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 5; j++ ) { for( int k = 0; k < 30; k++ ) { tab[ i ][ j ][ k ] = z; } } } } } void odczytaj( double tab[][ 5 ][ 30 ] ) { for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 5; j++ ) { for( int k = 0; k < 30; k++ ) { cout << "tablica[" << i << "]" << "[" << j << "]" << "[" << k << "]" << " = " << tab[ i ][ j ][ k ] << endl; } } } } Jednak program źle działa nie wiem czemu taką samo wartość przypisuję dla każdego elementu tablicy. |
|
stevy |
» 2014-08-01 22:10:28 Po co za pętla dla zmiennej z? trochę bezsensowne, bo najpierw każdej z 1500 komórek nadajesz wartość 0, potem każdej z 1500 komórek dajesz wartosc 1 itd... zrób bardziej normalną zmienną int z=0 i w tej najbardziej zagnieżdżonej pętli (tam gdzie masz tab[j][k]=z) wstaw powiedzmy z++; |
|
1aam2am1 |
» 2014-08-01 22:10:45 for( int z = 0; z < 1499; z++ ) { for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 5; j++ ) { for( int k = 0; k < 30; k++ ) { tab[ i ][ j ][ k ] = z; } } } }
Zamiast tego powinieneś int z = 0;
for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 5; j++ ) { for( int k = 0; k < 30; k++, z++ ) { tab[ i ][ j ][ k ] = z; } } }
|
|
zegarek84 |
» 2014-08-01 22:11:10 usuń zewnętrzną pętlę dla "z" a w jej miejsce zainicjuj zmienną np. na 0, tam gdzie przypisujesz wartość daj ++z to pierwsza wartość będzie 1... w ogóle nieźle to spowolniłeś... i powinieneś się nauczyć w pierwszej kolejności analizy działania programu/debugowania kodu... |
|
« 1 » 2 |