SottoMatrici

slevyn
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
vict85
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:

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.

slevyn
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");
}

hamming_burst
Ciao,
utilizza il tag [code] che così si indenta bene il codice :-)

slevyn
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");
}

hamming_burst
ad occhio penso che l'errore stia nel fatto che tu nel ciclo for di scansione
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 :-)

slevyn
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

hamming_burst
ah ok. allora io direi che puoi risolvere così:

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 :-)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.