PETRUCCI preguntado en Computadoras e internetSoftware · hace 1 década

PODRlAN AYUDARME CON UN PROGRAMA EN DEV C++?

NECESITO HACER UN PROGRAMA EN C QUE BUSQUE UN NUMERO Y KE ME DIGA EN DONDE LO ENCONTRO.

TENGO ESTE ALGORITMO DE LA FUNCION DE BUSQUEDA PERO NO SE COMO UTILIZARLO LLAMANDOLO DESDE EL MAIN, PODRIAN PONERME ALGUN EJEMPLO DE UN PROGRAMA DE BUSQUEDA, YA SEA QUE BUSQUE UN ENTERO O UN ARREGLO DE CARACTERES, DE ANTEMANO MUCHISIMAS GRACIAS

int busqueda_binaria(int arr[],int n, int busco)

{

int p=0, u=n-1, c;

while(p<=u)

{

c=(p+u)/2;

if (arr(c)==busco)return c;

if (busco<arr(c))u=c-1;

else

p=c+1;

}

return -1;

}

4 respuestas

Calificación
  • hace 1 década
    Respuesta preferida

    Vale. El siguiente programa utiliza tu función para buscar números en un vector de 100 elementos que está relleno con los cuadrados de sus índices:

    vector[i] = {0,1,4,9,16,...,9801}

    #include <stdio.h>

    int busqueda_binaria(int arr[],int n, int busco) {

    int p = 0, u = n - 1, c;

    while(p <= u) {

    c= (p + u)/2;

    if (arr[c] == busco) //Aqui tenias arr(c) en lugar de arr[c]

    return c;

    if (busco < arr[c]) //Lo mismo de arriba

    u = c - 1;

    else

    p = c + 1;

    }

    return -1;

    }

    main() {

    int vector[100], i = 100, j;

    while (i--)

    vector[i] = i*i;

    ++i;

    while (1) {

    puts("Numero a buscar (-1 = terminar):");

    scanf("%d", &i);

    if (i == -1)

    return 0;

    else if((j = busqueda_binaria(vector, 100, i)) != -1)

    printf("Posicion: %d\n", j);

    else

    puts("No encontrado");

    }

    }

  • Anónimo
    hace 1 década

    Hola, fijate que llevo una materria que se llama Métodos numércivos, pero no entiendo nada de programación...creo que necesito unas clasesitas extra

  • Anónimo
    hace 1 década

    Ya tienes la funcion de busqueda binaria que te regresa un entero que es la posicion donde encuentra el numero, solo tienes que implementarla en el main(), te dejo una idea de como hacerlo.

    Checa....

    //Incluir cabeceras .h

    int busqueda_binaria(int arr[],int n, int busco);

    main()

    {

    -Declarar un arreglo de enteros, int arr[]

    -Declarar el numero de elementos n que contendra el arreglo, int n;

    -Declarar una variable entera que contendra el valor a buscar., int busco;

    -Declar la variable donde se almacenara la posicion que regresa la funcion, int posicion;

    -leer numero de datos n

    -Leer datos del arreglo hasta n

    -Leer el numero a buscar

    -llamar a funcion busqueda binaria

    posicion = busqueda_binaria(arr,n,busco); //Esta es la llamada a la funcion

    -Imprimir en pantalla la variable posicion.

    }

    int busqueda_binaria(int arr[],int n, int busco)

    {

    int p=0, u=n-1, c;

    while(p<=u)

    {

    c=(p+u)/2;

    if (arr(c)==busco)return c;

    if (busco<arr(c))u=c-1;

    else

    p=c+1;

    }

    return -1;

    }

  • Anónimo
    hace 1 década
¿Aún tienes preguntas? Pregunta ahora para obtener respuestas.