/*
  Archivo: 1Funciones.c
  Descripción: Este hace uso de funciones y procedimientos para:
                    Enviar un mensaje a pantalla.
                    Enviar un número determinado de mensajes a pantalla.
                    Efectuar la suma de dos valores y regresar el resultado.
                    Imprimir el contenido de un arreglo e invocar una función 
                    que efectué la sumatoria de los valores contenidos dentro 
                    del arreglo.
             Objetivo:
              Utilización de Funciones y Procedimiento, paso de parametros, 
              valor de regreso y arreglos.
  Autor: Basurto Páez Gustavo
  Fecha: 25 de mayo de 2008
*/
/*Incluir librerías utilizadas en el programas*/
#include <stdio.h> 

/** 
*Descripción: Procedimiento que manda a imprimir un mensaje de hola mundo 
* Entrada : ninguno 
* Salida : ninguno 
**/
void HolaMundo()     
{     
    /*Declaración de variables locales*/
   
    printf(" \n\n\t Inicion del Procedimiento HolaMundo \n");
    printf( " \t\t\"Hola Mundo con Funciones \"  ");
}

/** 
*Descripcion: Se encarga de invocar a la funcion HolaMundo un 
*              número determinado de veces utilizando la estructura 
*              de control iterativa for, el número de veces que 
*              se repetirá será pasado como parámetro a la función
* Entrada : numero de tipo entero.
* Salida : ninguno. 
**/
void HolaMundoNVeces(int numVeces)     
{     
    /*Declaración de variables locales*/
    int cont = 0;   
    
    printf(" \n\n\t Inicion del Procedimiento HolaMundoNVeces \n");
    //Inicio del ciclo for, el contador empieza desde 0
    //se vaidad hasta que cont sea menor a numVeces
    for(cont =0 ; cont < numVeces; cont++)
    {
         //SE MANDA A INVOCAR AL PROCEDIMIENTO 
         HolaMundo(); 
    } //fin for   
}

/** 
*Descripcion: Dado dos parámetros se efectúa la suma de ambos 
*              y el resultado es el valor de regreso de la función
* Entrada : Dos valores flotantes.
* Salida : Resultado de la operación. 
**/
float Suma(float NumA, float NumB)     
{     
    /*Declaración de variables locales*/
    float Resultado = 0.0;   
    
    printf(" \n\n\t Inicion del Procedimiento Suma \n");

    //COMPLETA LA OPERACION DE SUMA
    

    //SE REGRESA EL VALOR 
    return (Resultado);
}

/** 
*Descripcion: Se pasa como parámetro un arreglo de enteros y el tamaño 
*              del arreglo, la función se encarga de enviar a pantalla 
*              el contenido del arreglo. 
*              Se invoca a la función "SumaArreglo" para obtener la 
*              sumatoria y mandar a imprimir el resultado.
* Entrada : Arreglo de enteros, y el tamaño del mismo.
* Salida : Ninguno. 
**/
void ImprimirSumarArreglo(int ArrEnt[], int Tam)     
{     
    /*Declaración de variables locales*/
    int sumatoria = 0;
    int cont=0;   
    
    printf(" \n\n\t Inicion del Procedimiento ImprimirSumarArreglo \n");

    //COMPLETA LA ESTRUCTURA PARA MANDAR A IMPRIMIR EL CONTENIDO DEL ARREGLO
    for (   ;   ;   )
    {
        printf(" \n Arreglo [%d]= %d ", cont, ArrEnt[cont]);    
    }
    
    //COMPLETE LA INVOCACION DE LA FUNCION SUMAARREGLO
        
    printf("\n\n El valor de la sumatoria es: %d", sumatoria);
        
}

/** 
*Descripcion: Se pasa como parámetro un arreglo de enteros y el 
*              tamaño del arreglo, la función se encarga de efectuar 
*              la suma de los valores contenidos en el arreglo y
*              regresar el resultado.
* Entrada : Arreglo de enteros, y el tamaño del mismo.
* Salida : El resultado de la operación de la sumatoria. 
**/
int SumaArreglo(int ArrEnt[], int Tam)     
{     
    /*Declaración de variables locales*/
    int suma = 0;   
    int cont = 0;
    
    printf(" \n\n\t Inicion del Procedimiento SumaArreglo \n");



    //COMPLETA LA ESTRUCTURA PARA EFECTUAR LA SUMA DEL ARREGLO
    for (   ;   ;    )
    {

    }
    //COMPLETE EL VALOR DE REGRESO    

 }

/***FUNCION PRINCIPAL***/
int main()
{
     /*Declaracion (e inicializacion) de variables*/
    int numEntero = 0 ; 
    float NumA, NumB;
    float Res = 0.0;
    int arregloEnt []= { 0, 1 , 2, 3, 4, 5, 6, 7, 8, 9 };
    int tamanio =10;
      
    printf("\t Programa Funciones... \n\n ");
    
    printf("\n\t Invocacion al procedimiento HolaMundo... \n\n ");
    //INVOCACION AL PROCEDIMIENTO 
    HolaMundo();
    
    printf("\n\nPresione una tecla para continuar\n");
    getch();
    
    printf("\n\n\n\t Invocacion al procedimiento HolaMundoNVeces... \n\n ");
    printf(" Proporcione un numero entero: " );
    scanf("%d", &numEntero);

    //INVOCACION AL PROCEDIMIENTO 
    HolaMundoNVeces(numEntero);
    
    printf("\n\nPresione una tecla para continuar\n");
    getch();
    
    printf("\n\n\n\t Invocacion a la funcion Suma... \n\n ");
    printf(" Proporcione un numero flotante: " );
    scanf("%f", &NumA);
    printf(" Proporcione un numero flotante: " );
    scanf("%f", &NumB);
    //INVOCACION DE LA FUNCION 
    Res = Suma(NumA, NumB);
    
    //COMPLETE ENVIANDO EL RESULTADO A PANTALLA
            
    printf("\n\nPresione una tecla para continuar\n");
    getch();
    
    printf("\n\n\n\t Invocacion al procedimiento ImprimirSumarArreglo... \n\n ");

    //INVOCACION AL PROCEDIMIENTO
    ImprimirSumarArreglo (arregloEnt , tamanio);
    
    printf("\n\nPresione una tecla para finalizar el programa \n");
    getch();

    
    return (0);
} 
