In questa lezione parliamo di matrice trasposta in C. Nella scorsa lezione abbiamo già parlato di matrici e abbiamo sviluppato alcuni esempi.
Matrice trasposta in linguaggio C
Prima dello sviluppo dell’algoritmo in C diamo alcune definizioni.
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 semplicemente 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.
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 dunque gli elementi a[i][j] della matrice originaria.
Notebook DELL Latitude 5480 Core i5 | Windows 11 Pro Display 14” Full HD | 16GB RAM SSD M.2 256GB | TypeC USB3 Webcam HDMI Business Laptop (Ricondizionato)
259,99 € (a partire da 18 Marzo 2024 14:59 GMT +01:00 - Altre informazioniProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Firma digitale Wacom DTU-1031X 2540lpi (Linee per Pollice) 222.72 x 125.28mm USB Nero, Grigio tavoletta Grafica (Ricondizionato)
200,00 € (a partire da 18 Marzo 2024 15:18 GMT +01:00 - Altre informazioniProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)HP, Pc Desktop Pronto All'Uso, Computer Pc Fisso Intel i7, Ram 16Gb, SSD 512Gb, Pacchetto Libre Office, Windows 10 Pro (Ricondizionato)
159,00 € (a partire da 18 Marzo 2024 14:59 GMT +01:00 - Altre informazioniProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Algoritmo per la matrice trasposta in C
Bene, realizzarla in C è molto semplice e non c’è differenza se una matrice è rettangolare o quadrata.
Realizzeremo quindi un algoritmo che:
- Chiederà la dimensione di M ed N;
- Farà inserire gli elementi della matrice A;
- Calcolerà la matrice trasposta A T ;
- La visualizzerà in output.
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 quindi un controllo dell’input.
La matrice trasposta in C si calcola semplicemente scorrendo le righe e le colonne della matrice a e ponendo b[j][i]=a[i][j].
Ecco dunque il codice completo:
#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]);
}
}
Questa è solo una possibile soluzione all’algoritmo per il calcolo della matrice trasposta in C. Chiaramente ci possono essere tantissimi altri algoritmi, dite pure la vostra nei commenti.
Alcuni link utili
Somma elementi diagonale principale di una matrice in C
Somma elementi cornice esterna in C
Come sommare i numeri di una matrice in C
Ricerca elementi in una matrice in C
Inserire dati in una matrice in C