Buonasera a tutti. C'era un esercizio che dovevo svolgere che diceva:
Scrivere una funzione che prende in input una matrice e restituisca in output la matrice trasposta (ovvero la matrice in cui la j-esima colonna è la j-esima riga della matrice data, per j=1,2,..n).
Il punto è questo: sono riuscita a stampare la matrice trasposta, ma l'ho fatto semplicemente invertendo la stampa di righe e colonne e volevo sapere se è giusto o meno farlo. Questo è il codice:
#include <stdio.h>
#define R 4
#define C 6
/* Scrivere una funzione che prende in input una matrice e restituisca in output la matrice trasposta
(ovvero la matrice in cui la j-esima colonna è la j-esima riga della matrice data per j=1,2,...,n) */
/* Prototipo di funzioni */
int caricamento_matrice(int matrice[][C]);
int stampa_matrice(int matrice[][C]);
int stampa_trasposta(int matrice[][C]);
int main(){
int mat[R][C];
caricamento_matrice(mat);
stampa_matrice(mat);
stampa_trasposta(mat);
return 0;
}
/* DEFINIZIONE DI FUNZIONI */
int caricamento_matrice(int matrice[][C]){
int i, j;
for(i=0; i<R; i++){
for(j=0; j<C; j++){
printf("Inserisci elemento riga %d colonna %d della matrice: ", i+1, j+1);
scanf("%d", &matrice[i][j]);}
}
}
int stampa_matrice(int matrice[][C]){
int i, j;
for(i=0; i<R; i++){
for(j=0; j<C; j++){
printf("%d ", matrice[i][j]);
} printf("\n");
}}
int stampa_trasposta(int matrice[][C]){
int i, j;
printf("La matrice trasposta e': \n");
for(j=0; j<C; j++){
for(i=0; i<R; i++){
printf("%d ", matrice[i][j]);
} printf("\n");
}
}
E' sbagliato? Dovevo creare una matrice del tutto nuova? So che una matrice del tipo
1 2 3
4 5 6
7 8 9
in realtà è come se fosse un vettore di vettori del tipo (1 2 3 4 5 6 7 8 9) e che quindi la trasposta sarebbe il vettore di vettori (1 4 7 2 5 8 3 6 9) (almeno credo) ma ho il dubbio se il problema riguarda solo la stampa o meno. Scusate per il dubbio ma devo portare questo esercizio a un professore e non vorrei aver interpretato male. Grazie per la pazienza