limlight  
          
              
                8 Styczeń 2017 00:22
               
              #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  
          
              
                8 Styczeń 2017 05:43
               
              #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?
 
         
        
           
         
            
       
      
        
          
          
            limlight  
          
              
                8 Styczeń 2017 09:44
               
              #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  
          
              
                8 Styczeń 2017 12:10
               
              #4 
           
         
        
          Nie możesz w deklaracji funkcji określić ilo elementową tablicę przyjmujesz.