/*
  Archivo: 2MatricesyFunciones.c
  Descripción: Este hace uso de funciones y procedimientos para:
                    Incilizar el contenido de una matriz en ceros.
                    Solicitar al usuario que ingrese informacion a la matriz
                    Imprimir el contenido de una matriz.
             Objetivo:
              Utilización de Funciones y Procedimiento, paso de parametros, 
              con el uso de matrices.
  Autor: Basurto Páez Gustavo
  Fecha: 25 de mayo de 2008
*/
/*Incluir librerias utilizadas en el programas*/
#include <stdio.h> 

//Declaracion de las constantes para determinar el tamanio de la matriz
#define MAXCOLUMNAS  4
#define MAXRENGLONES 3

//Prototipo de funciones.
void InicializaMatriz( int Matriz [MAXRENGLONES][MAXCOLUMNAS], int tamReng, int tamCol);
void LeeMatriz( int Matriz [MAXRENGLONES][MAXCOLUMNAS], int tamReng, int tamCol);
void ImprimirMatriz( int Matriz [MAXRENGLONES][MAXCOLUMNAS], int tamReng, int tamCol);

int main()
{

  int matriz[MAXRENGLONES][MAXCOLUMNAS] ; 
    
  printf("\t Programa Matrices y Funciones... \n\n ");
  
  printf("\n\t Invocacion al procedimiento InicializaMatriz... \n\n ");
  //COMPLETE LA INVOCACION AL PROCEDIMIENTO 
  //Recuerde pasar en orden los parametros.

 
  printf("\n\nPresione una tecla para continuar\n");
  getch();
    
  printf("\n\n\n\t Invocacion al procedimiento LeeMatriz... \n\n ");
  //COMPLETE LA INVOCACION AL PROCEDIMIENTO 
  //Recuerde pasar en orden los parametros.

  printf("\n\nPresione una tecla para continuar\n");
  getch();

  printf("\n\n\n\t Invocacion al procedimiento ImprimirMatriz... \n\n ");
  //COMPLETE LA INVOCACION AL PROCEDIMIENTO 
  //Recuerde pasar en orden los parametros.

  printf("\n\nPresione una tecla para Finalizar el programa \n");
  getch();
  
  return (0);
}

/** 
*Descripcion: Se pasa como parámetro una matriz, el numero de renglones 
              y de columnas, para recorrer la matriz se utiliza dos ciclos
              for, y asi inicializar en cero la matriz.
* Entrada : La matriz, el número de renglones y columnas.
* Salida : Por referencia la matriz en ceros
**/
void InicializaMatriz( int Matriz [MAXRENGLONES][MAXCOLUMNAS], int tamReng, int tamCol)
{
  /*Declaración de variables locales*/
  int contReng, contCol; //indices para acceder al contenido de la matriz
  
  printf(" \n\n\t Inicio del Procedimiento InicializaMatriz \n");
      
  //El primer for es para recorrer los renglones 
  for(contReng =0; contReng<tamReng; contReng++ )
  {
         //El segundo for es para recorrer las columnas
         for(contCol =0; contCol<tamCol; contCol++ )
         {
             //Se accede al contenido para colocar el valor 0
             Matriz[contReng][contCol] = 0;
         }
  }
  
  printf(" \n\n\t Fin del Procedimiento InicializaMatriz \n");
}

/** 
*Descripcion: Se encarga de solicitar al usuario que ingrese elemento 
*              a elemento de la matriz, es posible utilizar 
*              la estructura de control iterativa for, incluyendo 
*              el anidamiento en un nivel. 
* Entrada : La matriz, el número de renglones y columnas.
* Salida : Por referencia la matriz con nuevo valores
**/
void LeeMatriz( int Matriz [MAXRENGLONES][MAXCOLUMNAS], int tamReng, int tamCol)
{
  /*Declaración de variables locales*/
  int contReng, contCol; //indices para acceder al contenido de la matriz
  //Se manda a solicitar que el usuario teclee la informacion 
  printf(" \n\n\t Inicio del Procedimiento LeeMatriz \n");
  printf(" \n\n Debera de proporcionar los valores a ingresar a la matriz \n");   
 
  //ACOMPLETAR EL CODIGO 
    //El primer for es para recorrer los renglones 
  for(      ;       ;     )
  {
        //El segundo for es para recorrer las columnas
         for(     ;       ;      )
         {
              //se manda a solicitar un valor para almacenarlo 
              //en renglon y columna dado
              printf(" \n Teclee el valor Matriz [%d][%d]: ", contReng, contCol);
		//COMPLETE LA LECTURA CON LA FUNCION scanf
              
         }
  }
}             


/** 
*Descripcion: Se encarga de enviar a apantalla el contenido de la matriz en 
*              un formato adecuado. 
* Entrada : La matriz, el número de renglones y columnas.
* Salida : Ninguno.
**/
void ImprimirMatriz( int Matriz [MAXRENGLONES][MAXCOLUMNAS], int tamReng, int tamCol)
{
  /*Declaración de variables locales*/
  int contReng, contCol; //indices para acceder al contenido de la matriz 
  
  printf(" \n\n\t Inicio del Procedimiento ImprimirMatriz \n");
  //Se manda a imprimir el contenido de la matriz
  printf(" \n\n El contenido de la matriz es el siguiente: \n");   
  
  //COMPLETAR EL CODIGO PARA MANDAR A IMPRIMIR EL CONTENIDO DE LA MATRIZ 
 //El primer for es para recorrer los englones 
  for(  ;    ;    )
  {
         printf("\n\t [ ");
         
         //El segundo for es para recorrer las columnas
         for(   ;   ;    )
         {
              //se manda a impirmir accediendo al renglon y columna dado

         }
         printf(" ] ");
  }         
}
