CONTENIDO DE LA LECCIÓN 18

CONTENIDO DE LA LECCIÓN 18 CONTENIDO DE LA LECCIÓN 18

azul2.bnct.ipn.mx
from azul2.bnct.ipn.mx More from this publisher
06.05.2013 Views

MIGUEL Á. TOLEDO MARTÍNEZ /* El siguiente programa: BINARIO.CPP, utiliza una búsqueda binaria para localizar valores en el arreglo llamado contador, el cual contiene los valores de 1 a 100. La función busquedaBinaria imprime mensajes que describen el proceso. */ #include //Para cout y cin int busquedaBinaria(int arreglo[], int valor, int tamano) { int encontrado = 0; int alto = tamano, bajo = 0, enmedio; void main(void) { enmedio = (alto + bajo) / 2; cout

MIGUEL Á. TOLEDO MARTÍNEZ SOLUCIÓN DE PROBLEMAS EN ACCIÓN: Búsqueda en un arreglo con iteración (Búsqueda secuencial) PROBLEMA Diversas aplicaciones requieren de un programa para buscar un determinado elemento en un arreglo. Para realizar esta tarea se usan dos algoritmos comunes que son búsqueda secuencial o serial y búsqueda binaria. Por lo común, la búsqueda secuencial se utiliza para arreglos no ordenados y la búsqueda binaria en arreglos ordenados. En el siguiente problema veremos la búsqueda secuencial; en un problema posterior veremos la búsqueda binaria. Desarrolle una función que busque, en forma secuencial, en un arreglo de enteros, el valor de un elemento dado y que regrese el índice del elemento si éste se encuentra en el arreglo. DEFINICIÓN DEL PROBLEMA Debido a que se trata de una función, la definición del problema se enfocará a la interfaz de la función. Por consiguiente, se debe considerar que la función aceptará y regresará algo. Llamaremos a la función busquedaSec() A partir del enunciado del problema, la función deberá buscar en un arreglo de enteros un valor de un elemento determinado. De esta manera, la función necesita dos cosas para realizar este trabajo: (1) el arreglo y (2) el elemento que se va a buscar. Estos serán los parámetros de la función, ¿deberán ser de valor o de referencia? Bueno, la función no cambiará ni al arreglo ni al elemento a buscar, ¿es correcto? Por lo tanto, los parámetros serán por valor. Después, necesitamos determinar que va a regresar la función al programa llamador. A partir del enunciado del problema, se observa que la función necesita regresar el índice del elemento buscado, si se encuentra en el arreglo. En C++ todos los índices de los arreglos son enteros, por lo tanto la función regresará un valor entero. Pero, ¿qué pasa si el elemento que se busca no se encuentra en el arreglo? Se regresará algún valor entero que aclare esta situación. Dado que, en C++ los índices de los arreglos se encuentran en un rango de 0 a algún entero positivo finito, si el elemento no se encuentra en el arreglo, regresará el entero -1. De esta manera usaremos –1 para indicar la condición no encontrado, porque en C++ ningún índice de arreglo tiene este valor. La descripción de la interfaz de la función será: Función busquedaSec(): Busca en un arreglo entero un valor de elemento dado. Acepta: Un arreglo de enteros y el elemento que se busca. Regresa: El índice del arreglo del elemento, si se encuentra, o el valor –1 si no se encuentra el elemento. La descripción de interfaz de la función anterior proporciona toda la información necesaria para escribir la interfaz de la función, como sigue: int busquedaSec(int arreglo[MAX], int elemento) La interfaz indica que la función aceptará dos cosas: (1) un arreglo de elementos enteros MAX y (2) un valor entero, llamado elemento, que será el valor que se busca. La siguiente tarea es desarrollar el algoritmo de búsqueda secuencial. ARREGLOS, APUNTADORES Y ESTRUCTURAS – LECCIÓN 18 18-45

MIGUEL Á. TOLEDO MARTÍNEZ<br />

/* El siguiente programa: BINARIO.CPP, utiliza una búsqueda binaria para localizar<br />

valores en el arreglo llamado contador, el cual contiene los valores de 1 a<br />

100. La función busquedaBinaria imprime mensajes que describen el proceso.<br />

*/<br />

#include //Para cout y cin<br />

int busquedaBinaria(int arreglo[], int valor, int tamano)<br />

{<br />

int encontrado = 0;<br />

int alto = tamano, bajo = 0, enmedio;<br />

void main(void)<br />

{<br />

enmedio = (alto + bajo) / 2;<br />

cout

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!