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.
Fondamenti solidi di programmazione
Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.
⏱️9 ore di corso registrato
🧩Più di 50 algoritmi risolti passo passo
🎯Livello base
💻100% online, fruibile quando vuoi
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.
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.
Un'email ogni tanto con i nuovi articoli e le guide — niente spam, ti disiscrivi quando vuoi.
🍪 Questo sito usa i cookie
Utilizziamo cookie tecnici necessari al funzionamento e, previo tuo consenso, cookie
analitici e di terze parti per migliorare l'esperienza di navigazione.
Leggi la Cookie Policy e la
Privacy Policy.