Matrice trasposta in C

Realizziamo oggi una matrice trasposta in C.

Definizione di matrice trasposta

Partiamo da qualche definizione.

Ricordiamo dunque che una matrice A[M] [N] si dice rettangolare se M è diverso da N, altrimenti se M ed N sono uguali allora la matrice si dice quadrata.

Una matrice trasposta è una matrice che si ottiene da essa scambiando le righe con le colonne.

Ad esempio se ho la matrice A, la trasposta sarà la matrice A T come da figura sotto. In poche parole ho scambiato le righe con le colonne.

matrice trasposta

Quindi se A è una matrice M x N allora A T diventerà una matrice N x M.

Ovvero è una matrice i cui elementi a[j][i] sono gli elementi a[i][j] della matrice originaria.

Algoritmo per la matrice trasposta in C

Bene, realizzarla in C è molto semplice e non c’è differenza se una matrice è rettangolare o quadrata.

Realizzeremo un algoritmo che:

  • Chiederà la dimensione di M ed N;
  • Farà inserire gli elementi della matrice A;
  • Calcolerà la matrice trasposta A T ;
  • Visualizzerà la matrice trasposta ottenuta.


Procedimento

Definisco la dimensione massima delle righe e delle colonne in 8, ma ovviamente potevo indicare qualsiasi dimensione.

La matrice a[M][N] di interi ha come trasposta la matrice b[N][M].

Chiedo la dimensione delle matrici che definisco nelle variabili intere n ed m definendo un controllo dell’input.

La matrice trasposta si calcola semplicemente scorrendo le righe e le colonne della matrice a e ponendo b[j][i]=a[i][j].

#include <stdio.h>
#define M 8
#define N 8   

main() { 
int a[M][N];
int b[N][M];
int n,m,i,j;
do {
    printf("Dammi il numero di righe: ");
    scanf("%d", &m);
    } while ((m>M) || (m<1));

do {
    printf("Dammi il numero di colonne: ");
    scanf("%d", &n);
    } while ((n>N)|| (n<1));

 printf("\nInseriamo i dati nella matrice \n");
 for (i=0;i<m;i++)
    for(j=0;j<n;j++) {
        printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
        scanf("%d", &a[i][j]);
    }

 printf("\nCalcoliamo la matrice trasposta \n");
 for (i=0;i<m;i++)
    for(j=0;j<n;j++) {
        b[j][i]=a[i][j];
    }

 printf("\nStampiamo i dati della matrice \n");
 for (i=0;i<m;i++) {
    printf("\n");
    for(j=0;j<n;j++) 
        printf("\t%d", a[i][j]);                
    }   

 printf("\nStampiamo i dati della matrice trasposta \n");
 for (i=0;i<n;i++) {
    printf("\n");
    for(j=0;j<m;j++) 
        printf("\t%d", a[j][i]);                
    }  
} 

Bene, una possibile soluzione può essere questa. Chiaramente ce ne possono essere tantissime altre, dite la vostra nei commenti.

Alcuni link utili:

Somma elementi diagonale principale di una matrice in C

Somma elementi cornice esterna in C

Sommare due matrici in C

Sommare i numeri di una matrice in C

Prodotto tra matrici in C

Ricerca elementi in una matrice in C

Inserire dati in una matrice in C

Tavola pitagorica in C

Array multidimensionali in C

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C


Autore dell'articolo: Cristina

Avatar per Coding Creativo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *