Salve gente
preciso che sono un programmatore prettamente ad alto livello (Java). Per motivi didattici devo creare un piccolo programmino in c, utilizzando matrici dinamiche.
Tale programma per il momento, crea una matrice e ne calcola la trasposta, però quando vado ad eseguirlo sul terminale viene fuori il seguente errore
"Errore di segmentazione"
Purtroppo non riesco a capire dove sta questo problema, vi linko il codice.. Potete darmi una mano?! Grazie mille
#include <stdio.h>
#include <stdlib.h>
void trasposta(int **trasp, int **matrice, int righe, int colonne);
int main(void) {
int righe, colonne, i, j;
int **matrice;
int **trasp;
printf(" Righe........: ");
scanf("%d", &righe);
fflush(stdout);
printf(" Colonne......: ");
scanf("%d", &colonne);
fflush(stdout);
puts("");
matrice = (int**) malloc((righe * sizeof(int*)));
trasp = (int**) malloc((colonne * sizeof(int*)));
for (i = 0; i < righe; i++) {
matrice[i] = (int*) malloc(colonne * sizeof(int));
}
for (i = 0; i < colonne; i++) //poichè la matrice trasposta ha num righe e colonne invertire
{
matrice[i] = (int*) malloc(righe * sizeof(int));
}
for (i = 0; i < righe; ++i) {
for (j = 0; j < colonne; ++j) {
printf("Inserisci elemento riga %d e colonna %d: ", i, j);
fflush(stdout);
scanf("%d", &matrice[i][j]);
puts("");
}
}
trasposta(trasp,matrice,righe,colonne);
for (i = 0; i < righe; ++i) {
for (j = 0; j < colonne; ++j) {
printf("matrice[%d][%d]= %d ", i, j, matrice[i][j]);
fflush(stdout);
}
puts("");
}
for (i = 0; i < colonne; ++i) {
for (j = 0; j < righe; ++j) {
printf("matrice[%d][%d]= %d ", i, j, trasp[i][j]);
fflush(stdout);
}
puts("");
}
return 0;
}
void trasposta(int **trasp, int **matrice, int righe, int colonne) {
int i, j, tmp; /*Dichiaro la variabile temporanea per lo scambio*/
for (i = 0; i < righe; i++) {
for (j = 0; j < colonne; j++) {
tmp = trasp[i][j];
trasp[i][j] = matrice[j][i];
matrice[j][i] = tmp;
}
}
}