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.

C base

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.

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 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.

Alcuni link utili

Indice algoritmi linguaggio C

Somma elementi diagonale principale di una matrice in C

Copertina: 50 Algoritmi per imparare C++
📚 Consigliato per te

50 Algoritmi per imparare C++

Struttura dati, puntatori e algoritmi classici in C++, passo passo.

Vedi su Amazon

Somma elementi cornice esterna in C

Come sommare due matrici in C

Come 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

Insertion Sort in C

Gestione di una Pila mediante un array

Gestione di una Coda

🐍

Vuoi imparare Python da zero?

Scarica la guida gratuita Python in 10 giorni: 10 lezioni pratiche con esempi ed esercizi, direttamente nella tua email.

📥 Scarica gratis il PDF →