Tablica trójwymiarowa, odwołanie do jej wartości
Ostatnio zmodyfikowano 2015-05-17 20:25
Breon Temat założony przez niniejszego użytkownika |
Tablica trójwymiarowa, odwołanie do jej wartości » 2015-05-17 14:13:07 Witam. Dopiero zaczynam moją przygodę z programowaniem. Chcę wykorzystać w programie tablicę trójwymiarową. Zarezerwowałem pamięć, lecz nie potrafię odwołać się do jej wszystkich elementów. Działa odwoływanie do początku tej tablicy, do jej pierwszej "warstwy". Proszę o wskazanie mi błędu i pomoc z jego poprawą. main.cpp using namespace std;
int _tmain( int argc, _TCHAR * argv[] ) { int ilosc_graczy = 3; int wymiary_tablic_zbiory = 10; int wymiary_tablic_elementy = 10; class Tab tablica; tablica = tworzenie_tablicy( ilosc_graczy, wymiary_tablic_zbiory, wymiary_tablic_elementy ); cout << tablica.wartosci[ 1 ][ 1 ] << endl; cout << tablica.wartosci[ 1 ][ 2 ][ 9 ] << endl; cout << endl << "Dowolny klawisz zakonczy program"; _getch(); return 0; }
Plik fukncje.h typedef int byte;
class Tab { public: byte ** wartosci; int ilosc_graczy; int ilosc_elementow; int ilosc_zbiorow; };
class Tab tworzenie_tablicy( int ilosc_graczy, int ilosc_zbiorow, int ilosc_elementow );
Plik funkcje.cpp using namespace std;
byte ** rezerwacja_pamieci( int ilosc_graczy, int ilosc_zbiorow, int ilosc_elementow ) { int *** tab; tab = new int **[ ilosc_graczy ]; for( int m = 0; m < ilosc_graczy; m++ ) { tab[ m ] = new int *[ ilosc_zbiorow ]; for( int i = 0; i < ilosc_zbiorow; i++ ) { tab[ m ][ i ] = new int[ ilosc_elementow ]; for( int j = 0; j < ilosc_elementow; j++ ) { tab[ m ][ i ][ j ] = m * 10 + i; cout << " " << tab[ m ][ i ][ j ]; } cout << endl; } cout << endl; } return * tab; } struct Tab tworzenie_tablicy( int ilosc_graczy, int ilosc_zbiorow, int ilosc_elementow ) { class Tab tablica_nowa; tablica_nowa.ilosc_graczy = ilosc_graczy; tablica_nowa.ilosc_elementow = ilosc_elementow; tablica_nowa.ilosc_zbiorow = ilosc_zbiorow; tablica_nowa.wartosci = rezerwacja_pamieci( ilosc_graczy, ilosc_zbiorow, ilosc_elementow ); return tablica_nowa; }
|
|
pekfos |
» 2015-05-17 20:25:53 Żeby się odwołać do tablicy trójwymiarowej, najpierw wypadało by ją mieć. Masz ją tylko w rezerwacja_pamieci(), ale zwracasz już dwuwymiarową. Najwyraźniej to by było za proste, gdyby we wskaźnikach na tę tablicę mieć wszędzie 3 gwiazdki, a z funkcji zwracać po prostu tab.. |
|
« 1 » |