/* File: mattrasp.c */
/* Time-stamp: "2001-04-09 15:36:36 calvanes" */
/* Scopo: uso di array multidimensionali */

/* Legge una matrice di double, calcola la matrice trasposta e la stampa. */

#include <stdio.h>

#define R 3
#define C 2


void leggiMatrice(double m[R][C])
{
  int i, j;

  printf("Inserire gli elementi di una matrice di double %dx%d\n", R, C);
  for (i = 0; i < R; i++)
    for (j = 0; j < C; j++)
      scanf("%lg", &m[i][j]);
}


void stampaMatrice(double m[R][C])
{
  int i, j;

  for (i = 0; i < R; i++) {
    for (j = 0; j < C; j++)
      printf("%6.2g", m[i][j]);
    printf("\n");
  }
}

void stampaMatriceTrasp(double m[C][R])
{
  int i, j;

  for (i = 0; i < C; i++) {
    for (j = 0; j < R; j++)
      printf("%6.2g", m[i][j]);
    printf("\n");
  }
}


void trasposta(double m[R][C], double mt[C][R])
  /* Restituisce in trasp la trasposta della matrice m. */
{
  int i, j;

  for (i = 0; i < R; i++)
    for (j = 0; j < C; j++)
      mt[j][i] = m[i][j];
}


int main(void)
{
  double mat[R][C];
  double trasp[C][R];

  leggiMatrice(mat);
  printf("\nLa matrice inserita e`:\n");
  stampaMatrice(mat);

  trasposta(mat, trasp);
  printf("\nLa trasposta e`:\n");
  stampaMatriceTrasp(trasp);

  return 0;
}