/**
  * Programa Ejemplo #1 de la Clase #8
  * Este programa se presenta como ejemplo para iniciar la práctica
  * con el lenguaje de programación C++
  * Arreglos: Declaración, Inicialización, Uso, Funciones
  * Autor:  Carlos Roberto Arias
  * Elaborado como Recurso de la Clase de Programación III
  * Universidad Tecnológica Centroamericana
  * 2003
  */
  
#include <iostream>
#include <cstdlib>

using namespace std;

// Declaración de Funciones que usan arreglos

void readArray(int[], int);
void printArray(int[], int);
double sumatoria(double[], int);
int busquedaLineal(double, double[], int);

// Declaracion de funcion interesante...
int interesante(int[]);

int main(int argc, char* argv[]) // ¿Qué hacen estos parámetros en el main?
{
    // Declaración de un arreglo de int
    int arreglo1[5];
    
    // Lectura del Arreglo
    readArray(arreglo1, 5);
    
    // Impresión del Arreglo
    printArray(arreglo1, 5);
    
    // Declaración e Inicialización de un arreglo de int
    int arreglo2[] = {1, 3, 5, 7, 11, 13};
    
    printArray(arreglo2, 6);
    
    // Cosas Interesantes!!!!
    
    cout << "Tamanio del Arreglo arreglo1: " << interesante(arreglo1) << endl
         << "Tamanio del Arreglo arreglo2: " << interesante(arreglo2) << endl;
    // ¿¿ Explique la salida de las dos líneas anteriores ??
    // ¿¿ Porqué sale ese valor ??        

    // Probando otras funciones con arreglos:
    double arreglo3[10] = {1, -1.35, 2.4456, 7.7115, 3.15547,
                           7.223, -6.554, 0.112, 4.799, -9.454 };
    
    cout << "La sumatoria del arreglo es: " << sumatoria(arreglo3, 10) << endl;
    double key;
    int index;
    do {
        cout << "Introduzca un numero a buscar (0 para Terminar) ";
        cin >> key;
        if ( (index = busquedaLineal(key, arreglo3, 10)) == -1)
                cout << "No se encontro el elemento " << key << endl;
        else
                cout << "Se encontro en la posicion " << index << endl;
    }while (key != 0);


    system("pause");
    return 0;
}

void readArray(int a[], int s)
{
    for (int i=0; i<s; i++){
        cout<<"Elemento [" << i << "] ";
        cin >> a[i];
    }
}
void printArray(int a[], int s)
{
    for (int i=0; i<s; i++){
        cout<<"Elemento [" << i << "] ";
        cout<<a[i]<<endl;
    }
}
double sumatoria(double a[], int s)
{
    double retVal = 0.0;
    for (int i=0; i<s; i++)
        retVal += a[i];
    return retVal;
}
int busquedaLineal(double k, double a[], int s)
{
    int index = -1;
    for (int i=0; i<s; i++)
        if (a[i] == k){
           index = i;
           break;
        }
    return index;
}
int interesante(int a[])
{
    return sizeof(a) / sizeof(int);
}

