/*
 * arquivo: busca.c
 * -----------------------------
 * Este programa determina se um dado elemento y (real) ocorre num
 * dado vetor x com n elementos reais.  (n < 100)
 *
 * Ordem dos dados: y (real), n (inteiro), vetor real x com n elementos.
 */
#include <stdio.h>

#define NMAX 100

void leia_vetor(double v[], int n);
void imprima_vetor(double v[], int n);
int busca(double v[], int n, double z);

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

int main()
{
    double y, x[NMAX];
    int n;

    printf("Forneca o elemento y procurado: ");
    scanf("%lf", &y);
    printf("Forneca o valor de n: ");
    scanf("%d", &n);

    leia_vetor(x, n);
    imprima_vetor(x, n);

    if (busca(x, n, y))
	printf("O elemento %g foi encontrado.\n", y);
    else
	printf("O elemento %g nao foi encontrado.\n", y);

    return 0;
}

/*----------------------------------------------------------*/
/*
 * leia_vetor():
 * =============
 * Recebe um vetor de double v[] e um inteiro n.
 * Le n reais e os coloca em em v[], isto e', em
 * v[0],...,v[n-1].
 */
void leia_vetor(double v[], int n)
{
    int i;

    printf("Forneca os %d doubles: ", n);
    for (i = 0; i < n; i++)
	scanf("%lf", &v[i]);
}

/*-----------------------------------------------------------*/
/*
 * imprima_vetor():
 * ================
 * Recebe um vetor de n doubles v[] e o inteiro n
 * e imprime v[], isto e', imprime v[0],...,v[n-1].
 */
void imprima_vetor(double v[], int n)
{
    int i;

    printf("Os elementos do vetor sao ");
    for (i = 0; i < n; i++)
	printf("%g ", v[i]);
    printf("\n");
}

/*-----------------------------------------------------------*/
/*
 * busca():
 * =======
 * Recebe um vetor de n doubles v[0..n-1], um inteiro n,
 * e um double z; devolve 1 se z ocorre no vetor v[],
 * e devolve 0 se z nao ocorre no vetor v[].. 
 */

int busca(double v[], int n, double z)
{
    int i;
    v[n] = z;			/* sentinela */
    i = 0;
    while (v[i] != z)
	i++;

    if (i != n)
	return 1;
    else
	return 0;
}
