/**************************************************************************
 * Programa matriz.c                                                      *
 *                                                                        *
 * Utilização de ponteiro duplo para manipular uma matriz bidimensional.  *
 * Data: 18 de setembro de 2000                                           *
 * Autor: CuCo (Rodrigo Hausen)                                           *
 **************************************************************************/

#include <stdio.h>

main () {
  int i,j;
  
  // número de linhas e colunas da matriz
  int N,M;

  // ponteiro para a matriz de inteiros
  int **matriz;

  printf("Digite o número de colunas da matriz: ");
  scanf("%d",&N);

  // alocando espaço para as colunas
  matriz = (int **)malloc(N*sizeof(int *));

  printf("Digite o número de linhas da matriz: ");
  scanf("%d",&M);

  // alocando espaço para as linhas, uma de cada vez
  for (i=0;i<N;i++) 
    matriz[i] = (int *)malloc(M*sizeof(int));

  // inserindo números na matriz
  printf ("Digite os números a serem colocados na matriz:\n");
  for (j=0;j<M;j++)
    for (i=0;i<N;i++) {
      printf ("elemento [%d][%d]: ",i,j);
      scanf("%d",&matriz[i][j]);
    }

  // imprimindo a matriz
  printf ("A matriz é:\n\n");
   for (j=0;j<M;j++) {
    for (i=0;i<N;i++) {
      printf ("%3d ",matriz[i][j]);
    }
    printf ("\n");
  }
} 
