SottoMatrici
Salve ragazzi ...una domanda ...data una matrice quadrata tipo 9x9 , 16x16 ..ecc..come faccio a visualizzare la matrice divisa nelle rispettiva sottomatrici ? Riesco solo a visualizzare il contorno della matrice principale , ma le sottomatrici no ...come linguaggio uso il C
Risposte
In che modo lo vorresti suddiviso? Non esiste un modo standard e poi che layout hanno le matrici considerate? Per righe, per colonne, a blocchi? E in quest'ultimo caso in che modo quale layout hanno i blocchi?
Hai definito la matrice come:
o come
Il primo dei due è più comune e "potente" per certi versi. Il secondo te lo sconsiglio e professionalmente non lo usa nessuno. Poi fai un po' come ti pare.
Hai definito la matrice come:
base_type a[n*n];
o come
base_type a[n][n]
Il primo dei due è più comune e "potente" per certi versi. Il secondo te lo sconsiglio e professionalmente non lo usa nessuno. Poi fai un po' come ti pare.
ho utilizzato il primo matrice[n*n]
comunque questo è il pezzo di codice che mi stampa la matrice ...
int i , j ;
printf("%4s"," ");
for(i= 0 ; i < dimensione ; i++) {
printf("%2d",i); }
printf("\n");
printf("%4s"," ");
for( i = 0 ; i < dimensione; i++){
printf("--");
}
printf("\n");
for( i = 0 ; i < dimensione ; i++ ) {
printf("%2d " , i);
printf("|");
for( j = 0 ; j < dimensione ; j ++ ) {
printf("%2d" , sudoku[i*dimensione + j]);
}
printf("|");
printf("\n");
}
printf("%4s"," ");
for( i = 0 ; i < dimensione ; i++){
printf("--");
}
printf("\n\n");
}
comunque questo è il pezzo di codice che mi stampa la matrice ...
int i , j ;
printf("%4s"," ");
for(i= 0 ; i < dimensione ; i++) {
printf("%2d",i); }
printf("\n");
printf("%4s"," ");
for( i = 0 ; i < dimensione; i++){
printf("--");
}
printf("\n");
for( i = 0 ; i < dimensione ; i++ ) {
printf("%2d " , i);
printf("|");
for( j = 0 ; j < dimensione ; j ++ ) {
printf("%2d" , sudoku[i*dimensione + j]);
}
printf("|");
printf("\n");
}
printf("%4s"," ");
for( i = 0 ; i < dimensione ; i++){
printf("--");
}
printf("\n\n");
}
Ciao,
utilizza il tag [code] che così si indenta bene il codice
utilizza il tag [code] che così si indenta bene il codice

int i , j ; printf("%4s"," "); for(i= 0 ; i < dimensione ; i++) { printf("%2d",i); } printf("\n"); printf("%4s"," "); for( i = 0 ; i < dimensione; i++){ printf("--"); } printf("\n"); for( i = 0 ; i < dimensione ; i++ ) { printf("%2d " , i); printf("|"); for( j = 0 ; j < dimensione ; j ++ ) { printf("%2d" , sudoku[i*dimensione + j]); } printf("|"); printf("\n"); } printf("%4s"," "); for( i = 0 ; i < dimensione ; i++){ printf("--"); } printf("\n\n"); }
ad occhio penso che l'errore stia nel fatto che tu nel ciclo for di scansione
vai da $i$ (risp. $j$) a "dimensione".
Se "dimensione" è $n*n$, allora dovrai fare il ciclo for da $i$ e $j$ a $n$.
Dimensione è il numero di celle della matrice, non il numero di righe $i$ e colonne $j$.
prova
for( i = 0 ; i < dimensione ; i++ ) { printf("%2d " , i); printf("|"); for( j = 0 ; j < dimensione ; j ++ ) { printf("%2d" , sudoku[i*dimensione + j]); }
vai da $i$ (risp. $j$) a "dimensione".
Se "dimensione" è $n*n$, allora dovrai fare il ciclo for da $i$ e $j$ a $n$.
Dimensione è il numero di celle della matrice, non il numero di righe $i$ e colonne $j$.
prova

no no il codice è giusto..la matrice viene stampata correttamente ...voglio capire solo come fare a divere la matrice nelle sottomatrice corrispondenti...per esempio una matrice 9x9 dividerca in 9 sottomatrici da 3x3.. considerando una matrice 9x9 dimensione assume valore 9 ..considerando una matrice 16x16 assume valore 16 ..e cosi via
ah ok. allora io direi che puoi risolvere così:
i cicli for riscrivi così:
dovrebbe essere una cosa del genere, prova
i cicli for riscrivi così:
S = dimenstione sottomatrice for(int p=0,int i=0;i<N;p++,i=(S^p)-1){ for(int j=0;j<S;j++){ sudoku[(i*N)+j)] } }
dovrebbe essere una cosa del genere, prova
