Avendo questo pezzo di codice :
..con m = n = 4, se metto k = 1 e inserisco una sola cordinata, per esempio a[0] = 0, b[0] = 1, riempie la matrice con 4 righe e m*n colonne, cioè:codice:for(int i = 0; i < k; i++){ // k = 2 if(i == 0) startRows = 0; else startRows = rangeDirezioni[i-1]; //rangeDirezioni[0] = 4, rangeDirezioni[1] = 4 /* Direzione verticale */ if(a[i]==0 && b[i]!=0){ for(int row = startRows; row < rangeDirezioni[i]; row++){ int col = 0; for(int y = m-1; y >= 0; y--){ for(int x = 0; x < n; x++){ if(x == row) A[row][col] = 1; else A[row][col] = 0; col++; } } } } /* Direzione orizzontale */ if(a[i]!=0 && b[i]==0){ int p = m-1; for(int row = startRows; row < rangeDirezioni[i]; row++){ int col = 0; for(int y = m-1; y >= 0; y--){ for(int x = 0; x < n; x++){ if(col < m*n){ if(y == p) A[row][col] = 1; else A[row][col] = 0; } col++; } }p--; } } }
se invece, ho k = 2 come nel codice, e inserisco le coordinate a[0] = 0, b[0] = 1 e a[1] = 2, b[1] = 0 (sono coordinate inserite da tastiera e poi messi nel vettore) dovrebbe riempirmi una matrice con 8 righe(somma degli elementi del vettore rangeDirezioni[]) e m*n colonne (in questo caso 16 colonne)fatta in questo modo:1000100010001000
0100010001000100
0010001000100010
0001000100010001
e invece mi stampa una matrice con 8 righe e m*n colonne fatta di tutti 0.1000100010001000
0100010001000100
0010001000100010
0001000100010001
1111000000000000
0000111100000000
0000000011110000
0000000000001111
Non riesco a capire il motivo, perchè se faccio i passaggi a mano sul foglio, invece a logica torna...
Come potrei fare?

Rispondi quotando