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