/*
 * 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);  /*** Veja como a           ***/
                                                      /*** matriz a e' declarada ***/

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

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);            /*** Veja como a matriz M e' passada ***/
  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");
}