14.3 C
Roma
mercoledì, Maggio 12, 2021
Home Corsi C Come trasporre una matrice in C

Come trasporre una matrice in C

Prima di entrare nel vivo dell’argomento è bene comprendere cosa si intenda con trasposizione di una matrice. Con traporre si intende che la matrice viene “ruotata di 90°”, potremmo definirlo in questo modo in quanto le righe diventeranno colonne e le colonne diventeranno righe. Vediamo teoricamente cosa intendiamo.

Questa sarà la nostra matrice di partenza:

MarioFrancescoEgidio
GiovanniRiccardoOttavio

Il risultato finale invece sarà

MarioGiovanni
FrancescoRiccardo
EdigioOttavio

Per poter procedere nella creazione del nostro programma in C che ci consenta di trasporre una matrice analizziamo gli elementi di cui necessitiamo.

  1. Due matrici, (la matrice iniziale e la matrice trasposta)
  2. Conoscenza dei cicli For (per inserimento e stampa della matrice)
  3. Saper generare numeri casuali (per riempire automaticamente le matrici senza perdere tempo)

Il programma possiamo dividerlo in cinque fasi:

  1. Valorizzazione delle dimensioni della matrice
  2. Caricamento automatico
  3. Stampa della matrice
  4. Trasposizione della matrice
  5. Stampa della matrice trasposta

CODICE

#include <stdio.h>
#include <stdlib.h>
#include <time.h> 

int main() {	
    int a[100][100], b[100][100], r, c;
    srand(time(0)); 
    r = rand()%10+1;
    c = rand()%10+1;
    
    printf("Il numero di colonne e': %d \n",c);
    printf("Il numero di righe e': %d \n",r);
	printf("\n\n");
    
    //---ASSEGNAZIONE AUTOMATICA ELEMENTI MATRICE
    for (int i = 0; i < r; i++)
    {
    	for (int j = 0; j < c; j++)
    	{
    		a[i][j] = rand()%30+1;
		}
	}
	
	//---STAMPA DELLA MATRICE
	for (int i = 0; i < r; i++)
	{
		for (int j = 0; j < c; j++)
		{
			printf("%d \t",a[i][j]);
		}
		printf("\n");
	}
	
	//---TRASPOSIZIONE DELLA MATRICE
	for (int i = 0; i < r; i++)
	{
		for (int j = 0; j < c; j++)
		{
			b[j][i] = a[i][j];
		}
	}
	
	printf("\n\n\n");
	//---STAMPA MATRICE TRASPOSTA
	for (int i = 0; i < c; i++)
	{
		for (int j = 0; j < r; j++)
		{
			printf("%d \t",b[i][j]);
		}
		printf("\n");
	}
}

In primis dichiariamo le librerie che ci saranno necessarie alla creazione del nostro programma:

  • Studio per la gestione dell’input e output;
  • Stdlib per la generazione di elementi casuali, rand srand;
  • Time per le funzioni relegate al tempo, time.

Successivamente dichiariamo le nostre principali variabili:

  • a, matrice principale la quale verrà caricata automaticamente;
  • b, matrice finale nella quale verrà inserita la matrice trasposta;
  • r, indice per il numero di righe (generato automaticamente)
  • c, indice per il numero di colonne (generato automaticamente)

Una volta calcolato il numero di righe e di colonne della nostra matrice dobbiamo esclusivamente popolarla, sempre automaticamente tramite un ciclo perché stampa e caricamento di una matrice non sono argomento dell’articolo odierna, tuttavia puoi consultare la guida guida sull’argomento.

Il fulcro quindi è la funzione per trasporre la matrice e la relativa stampa. Per trasporre la matrice effettuiamo un ciclo come quello per il caricamento e la stampa ma l’istruzione “b[j][i] = a[i][j];” sarà punto di riflessione. Per trasporre la matrice abbiamo invertito gli indici della matrice principale quindi b[1][2] = a[2][1] cioè “La seconda colonna del primo rigo di b è uguale alla prima colonna del secondo rigo di a”. Per la stampa invece avendo invertito le dimensioni della matrice dobbiamo necessariamente invertire gli indici all’interno del ciclo il numero di colonne al posto delle righe e viceversa.

Per trasporre la matrice abbiamo quindi effettuato ciclo identico a quello si stampa ma valorizzando al contrario la matrice, quindi invertendo gli indici.

LINK UTILI

Pagina Instagram: https://www.instagram.com/developer_sumo/
Corso C: https://www.developersumo.com/c/
Altri algoritmi in C: https://www.developersumo.com/category/corsi/c/algoritmi/
I nostri Corsi: https://www.developersumo.com/corsi/
Le nostre App su Play Store: https://play.google.com/store/apps/developer?id=Developer+Sumo

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Cos’è e come fare un Vlog

Se siete abituati ad usare la tecnologia è abbastanza probabile che siate giovani e che passiate molto tempo sui social e se...

Come usare e creare le classi in HTML

L'attributo class è utilizzato per assegnare ad un oggetto HTML una classe. Una delle caratteristiche principali delle classi HTML è che possono...

Lista compleanni personaggi Death Note

Death Note scritto da Tsugumi Ōba e illustrato da Takeshi Obata. È stato serializzato in Giappone dal 1º dicembre 2003 al 15...

Linguaggio di Programmazione di League of Legends

Se sei un appassionato di sviluppo informatico sicuramente ti sarai chiesto quale sia il linguaggi di programmazione di League of Legends. League...

Recent Comments