Oregon certo che si può sommare la trasposta, sempre matrice è, basta che rispetti le dimensioni dette.
Copio e incollo da internet (tanto è un problema stranoto)
Questa è la somma generica di due matrici con allocazione dinamica
int** addMatrix(int** matrix1,int** matrix2,int r1,int c1,int r2,int c2) {
int** addition = (int**)malloc(r1*sizeof(int*));
if (r1 == r2 && c1 == c2) {
for (int row = 0; row < r1; row++) {
addition[row]=(int*)malloc(r1*sizeof(int));
for (int col = 0; col < c1; col++)
addition[row][col] = matrix1[row][col] + matrix2[row][col];
}
} else {
printf("error\n");
}
return addition;
}
Per sommare la trasposta basta che inverti r2 e c2 e [row] e [col] della seconda matrice