C++ funkcja rand, tablice wielowymiarowe


(Cieslak Kaska) #1

Witam

 

próbuję napisać program, w którym tworzę 4-wymiarową tablicę i fragment tej tablicy uzupełniam losowo liczbami 0-1.

Program się kompiluje, ale pojawia się segmentation fault.

 

Nie do końca potrafię używać gdb, ale generalnie problem leży w generowaniu liczb pseudolosowych, lub w przekazaniu tblicy do funkcji fill.

Niestety nie potrafię znalezć błędu.

 

w linku znajduje się kod:

 

http://wklej.org/id/3009285/

 

Moje umiejętności nie są wysokie, więc bardzo proszę o dokładne wytłumaczenie gdzie i dlaczego w kodzie jest błąd.

 

Pozdrawiam


(stasinek) #2
int tab[][N][N][2] dlaczego nie tab[N][N][N][2]?

INT = cokolwiek %10 -> 1-9 -> dzielone / 10 = 0;

if (0<0.7) tab[i][j][k][0] = 1;    

fill(tab, x1, ystart=5, z1, xmax5, ymax=1 dlaczego?, xmax5); 

dlaczego zaczynasz wypełnianie od 1 nie od 0?

 


(Cieslak Kaska) #3

int tab[][N][N][2] dlaczego nie tab[N][N][N][2]? 

 

Debugger znalazł mi błąd w linijce definiującej funkcję fill, zapis tab[][N][N[2] jest próbą zlikwidowania tego błędu.

 

Dziękuję za zwrócenie uwagi z modulo.

 

fill(tab, x1, ystart=5, z1, xmax5, ymax=1 dlaczego?, xmax5);

 

Tu też zaszła pomyłka. Chodziło o to, aby uzupełniane były komórki od 2 do 5, pomyliłam kolejność wprowadzanych argumentów…

 

Funkcja fill ma wypełniać obszar tablicy ograniczony przez współrzędne podane do funkcji - dlatego zaczynam wypełnianie tablicy od drugiej komórki i kończę na szóstej, choć tablica jest większa.

 

Jednak poprawiony kod wciąż wyrzuca segfault., w linijce 27 poniższego kodu:

 

http://wklej.org/id/3009404/

 

 


(Fizyda) #4

Nie możesz w deklaracji funkcji określić ilo elementową tablicę przyjmujesz.