Ho individuato un'evidente errore, andavo a determinare l'intorno del punto senza prima inizializzare tutti gli elementi della matrice. Ho quindi modificato due funzioni:
Ma il problema persiste, inoltre in Letter.position sovente trovo salvati valori in'attesi e improponibili, tra l'altro molto simili agli indirizzi della zona di memoria in cui lavoro. Cio provoca caos nel calcolo delle distanze e cosi di seguito.codice:/** * * */ Letter around_of_letter( Matrix M, Letter L) { int x,y; int i=0; for(x=0; x<SIDE; x++) for(y=0; y<SIDE; y++) { if( distance_between_letters( M[x][y], L ) == 1 ) L.around[i++] = &M[x][y] ; else L.around[i++] = NULL ; } return L ; } /** * * */ Matrix matrix_fill( Matrix M, char *W ) { int x,y; int i = 0; for(x=0; x<SIDE; x++) for(y=0; y<SIDE; y++) { M[x][y].letter = W[i++]; M[x][y].position.x = x; M[x][y].position.y = y; } for(x=0; x<SIDE; x++) for(y=0; y<SIDE; y++) M[x][y] = around_of_letter( M, M[x][y] ) ; return M ; }
Non me ne capacito...![]()
![]()
![]()

Rispondi quotando