Simmetria nelle matrici

di il
1 risposte

Simmetria nelle matrici

Mi sento un pò derelitto ma ho perso gli appunti sulla simmetria nelle matrici....
nn mi ricordo un granche solo che ci sono 4 assi :
1)orizz. -
2)vert. |
3)diag. princ. \
4)diag. sec. /

ora c'era il modo di riempire ,da uno spicchio di un ottavo(quello in alto a sinistra), tutta la matrice
e qui pensavo... com'era l'algoritmo di scambio degl'indici per ogni asse?
aspetto risposte grazie !

1 Risposte

  • Re: Simmetria nelle matrici

    Ti ho scritto degli esempi in C relativamente ad una matrice quadrata MxM; però per gli assi orizz. e vert. tali algoritmi vanno bene per qualsiasi tipo di matrice, mentre per gli altri due assi no perchè posseduti solo da matrice quadrata.

    1)orizz.

    int i = 0;//indice della prima riga
    int j = M-1; //indice dell'ultima riga
    int k;//indice della prima colonna

    for(k=0;k<M;k++){
    while(i<=j){
    assegni un valore a mat[k];
    mat[j][k]=mat[k];
    i++;
    j--;
    }
    }

    2)vert.

    int i = 0;//indice della prima colonna
    int j = M-1; //indice dell'ultima colonna
    int k;//indice della prima riga

    for(k=0;k<M;k++){
    while(i<=j){
    assegni un valore a mat[k];
    mat[k][j]=mat[k];
    i++;
    j--;
    }
    }

    3)diag. principale \

    //i è indice di riga
    //j è indice di colonna

    for(int i=0;i<M;i++){
    for(int j=0;j<i;j++){
    assegni valore a mat[j];
    mat[j]=mat[j];
    }
    assegni valore a mat;
    }

    4)diag. secondaria /

    //i è indice di riga
    //j è indice di colonna

    for(int i=0;i<M;i++){
    for(int j=0;j<(M-i);j++){
    assegni valore a mat[j];
    mat[M-1-j][M-1-i]=mat[i][j];
    }
    }

    spero di non aver fatto errori, comunque questi sono indicativamente i cicli per la gestione della simmetria di matrici, ovviamente poi adatti il codice a quello che devi fare te
Devi accedere o registrarti per scrivere nel forum
1 risposte