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

nadanie wartości tablicy trójwymiarowej i i ich odczytanie

Ostatnio zmodyfikowano 2014-08-01 22:37
Autor Wiadomość
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:

C/C++
#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;
            }
           
        }
    }
   
}
P-114877
docentpp
» 2014-08-01 17:26:50
Tutaj jest błąd !!!!!


C/C++
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.
P-114879
pekfos
» 2014-08-01 17:28:42
C/C++
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ć..?
P-114880
michal11
» 2014-08-01 17:58:21
Może mała podpowiedz, wypisywanie i wpisywanie robi się prawie tak samo.
P-114882
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:

C/C++
#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.
P-114893
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++;
P-114897
1aam2am1
» 2014-08-01 22:10:45
C/C++
for( int z = 0; z < 1499; z++ ) //wykonujesz pętle nadania wartości każdego elementu zmienną "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; //przypisujemy wartość z "z"
            }
           
        }
    }
}
Zamiast tego powinieneś
C/C++
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++ ) //tu zwiększamy wartość "z"
       
        {
           
            tab[ i ][ j ][ k ] = z;
        }
       
    }
}
P-114898
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...
P-114899
« 1 » 2
  Strona 1 z 2 Następna strona