/*
 * arquivo: leia_imprima_matriz.c
 * ------------------------------
 * Este programa ilustra a passagem de matrizes como parametros
 * em funcoes.
 */
#include <stdio.h>

#define MMAX 10
#define NMAX 10

/**********************************************************************/
/*
 * leia_matriz():
 * =============
 * Recebe uma matriz de doubles a[][NMAX] e inteiros m e n.
 * Le m x n reais e os coloca em em a, isto 'e, em
 *
 * a[0][0] ... a[0][n-1]
 * a[1][0] ... a[1][n-1]
 * ...
 * a[m-1][0] ... a[0][n-1]
 */

void leia_matriz(double a[][NMAX], int m, int n);

/*
 * imprima_matriz():
 * ================
 * Recebe uma matriz de m x n doubles a[][NMAX] e inteiros m e n
 * e imprime a, isto 'e, imprime 
 *
 * a[0][0] ... a[0][n-1]
 * a[1][0] ... a[1][n-1]
 * ...
 * a[m-1][0] ... a[0][n-1]
 */

void imprima_matriz(double a[][NMAX], int m, int n);

/**********************************************************************/

int main()
{
  double M[MMAX][NMAX];
  int m, n;

  printf("Forneca os valores de m e n: ");
  scanf("%d %d", &m, &n);

  leia_matriz(M, m, n);
  imprima_matriz(M, m, n);
  
  return 0;
}

/**********************************************************************/

void leia_matriz(double a[][NMAX], int m, int n)
{
  int i, j;

  printf("Forneca as entradas da matriz %d x %d:\n", m, n);
  for (i=0; i<m; i++)
    for (j=0; j<n; j++)
      scanf("%lf", &a[i][j]);
}

void imprima_matriz(double a[][NMAX], int m, int n)
{
  int i, j;

  printf("\nOs elementos da matriz sao\n\n");
  for (i=0; i<m; i++) {
    for (j=0; j<n; j++)
      printf("%g ", a[i][j]);
    printf("\n");
  }
  printf("\n");
}

