#include <stdio.h>
#include <stdlib.h>
int *transposta (int m, int n, int *mat1)
{
int i, j;
int *trp;
trp = (int*) malloc (n*m*sizeof(int));
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
trp[j*m+i] = mat1[i*n+j];
return trp;
}
digitar(int m, int n, int *mat2){
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
printf("Digite o valor da matriz na posicao [%d][%d]: ", i, j);
scanf("%d", &mat2[i*n+j]);
}
}
}
mostrar(int m, int n, int *mat3){
int i, j;
for (i = 0; i < m; i++){
for (j = 0; j < n; j++)
printf("%6d", mat3[i*n+j]);
printf("\n");
}
}
int main(){
int x, y, *mat, *Q;
printf("Digite o numero de elementos da linha da matriz: ");
scanf("%d", &x);
printf("Digite o numero de elementos da coluna da matriz: ");
scanf("%d", &y);
mat = (int*) malloc(x*y*sizeof(int));
digitar(x, y, mat);
printf("Matriz: \n");
mostrar(x, y, mat);
Q = transposta(x, y, mat);
printf("Transposta: \n");
mostrar(x, y, Q);
free(mat);
return 0;
}