Prof. María Beatriz Serrano V.

1/11
Computación II
Métodos de Búsqueda


Búsqueda Secuencial / Lineal

Esta practica tiene como objetivo principal ejercitar la manipulación de arreglos unidimensionales,
así como también reforzar las técnicas de depuración y el análisis de programas.

BÚSQUEDA SECUENCIAL / LINEAL
El proceso de búsqueda secuencial es una de las operaciones más comunes en la manipulación de
arreglos. Puede definirse como el proceso de determinar el elemento, o su posición, que cumple
una condición, comparando con cada uno de los elementos en forma secuencial. Es el método de
búsqueda recomendado cuando se tiene un arreglo en el cual no se conoce la relación entre sus
elementos, es decir estos están desordenados.








































{
Proceso de Búsqueda Secuencial
de VALOR en el arreglo A
}

{ Inicializaciones }
POS := 0;
I := 1;

{ Recorrido del arreglo buscando VALOR }
While ( ( I< = N ) and
( A[ I ] <> VALOR ) ) do
I := I + 1;

{ Determinar si encontró o no }
If I <= N then
POS := I;

QUE SE TIENE:
Para llevar a cabo esta tarea se requiere
de la siguiente información de entrada:
• El arreglo
• La dimensión del arreglo
• La condición: el valor a buscar
QUE SE PIDE:
Determinar La posición POS donde se
encuentra VALOR en el arreglo A.
Note que tiene dos posibles resultados:
• Encontrar VALOR en A
• No encontrar VALOR en A
COMO LOGRARLO:
Para llevar a cabo esta tarea se requiere
de tres pasos:
• Asumir que VALOR no se encuentra
en el arreglo
• Recorrer el arreglo hasta encontrar o
no encontrar VALOR en el arreglo
• Determinar si encontró o no el
VALOR:
• Encuentra VALOR en el arreglo
cuando termina la búsqueda y no
ha terminado de recorrer todo el
arreglo. En este caso POS
almacena la posición donde se
encuentre VALOR en X.
• No encuentra VALOR en el
arreglo, En este caso termina de
recorrer el arreglo. POS
almacena la posición donde se
encuentre VALOR en X.
Quedando POS con el valor cero.
Prof. María Beatriz Serrano V. 2/11
Computación II
Ejemplo de Búsqueda Secuencial: Valor a buscar en el arreglo A: VALOR = 33
Primera iteración: A[1]=1 <> VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97

i=1


Segunda iteración: A[2]=11 <> VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97

i=2


Tercera iteración: A[3]=21 <> VALOR

A = 1 11
21
25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97

i=3


Cuarta iteración: A[4]=25 <> VALOR

A = 1 11 21
25
26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97

i=4


Quinta iteración: A[5]=26 <> VALOR

A = 1 11 21 25
26
33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97

i=5


Sexta iteración: A[6]=33 = VALOR

A = 1 11 21 25 26
33
38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97

i=6


Note que si el valor NO se encuentra en el arreglo, entonces se recorre todo el arreglo, posición a
posición hasta agotar los elementos. En este caso, siempre se cumple que A[i] <> VALOR.






Búsqueda Binaria

La búsqueda binaria permite buscar valores mas eficientemente que la búsqueda secuencial, sin
embargo, el método requiere que la información sobre la cual se va a buscar este ordenada.
El método se basa en el conocimiento de la información. Al estar ésta ordenada puede descartarse
la mitad que se sabe no es posible que este la información. Veamos algunos ejemplos:





Prof. María Beatriz Serrano V. 3/11
Computación II
EJEMPLO 1: CASO EN QUE NO SE ENCUENTRA EL VALOR

Valor a buscar en el arreglo A: VALOR = 75

Primera iteración: A[m]=59 <> VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97



i=1 m=13 j=25

VALOR > A[m] se descarta la primera mitad


Segunda iteración: A[m]=77 <> VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97



i=14 m=20 j=25

VALOR < A[m] se descarta la segunda mitad


Tercera iteración: A[m]=67 <> VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97



i=14 m=17 j=19

VALOR > A[medio] se descarta la primera mitad


Cuarta iteración: A[m]=72 = VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97



i=18 m=19
j =19
VALOR > A[medio] se descarta la primera mitad


Quinta iteración: A[m]=76 = VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97



j=19 i=20
m=19
Termina la búsqueda, VALOR NO se encuentra en posición: m; i > j


Prof. María Beatriz Serrano V. 4/11
Computación II
EJEMPLO 2: CASO EN QUE SE ENCUENTRA EL VALOR

Valor a buscar en el arreglo A: VALOR = 48

Primera iteración: A[m]=59 <> VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97



i=1 m=13 j=25
VALOR < A[m] se descarta la segunda mitad


Segunda iteración: A[m]=38 <> VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97



i=1 m=7 j=12

VALOR > A[m] se descarta la primera mitad


Tercera iteración: A[m]=50 <> VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97



i=8 m=11 j=12

VALOR < A[m] se descarta la segunda mitad


Cuarta iteración: A[m]=48 = VALOR

A = 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97



i=8 m=10
j=10
Termina la búsqueda, VALOR se encuentra en posición: m

BÚSQUEDA BINARIA: INSTRUCCIONES:








QUE SE TIENE:
Para llevar a cabo esta tarea se requiere
de la siguiente información de entrada:
• El arreglo ORDENADO
• La dimensión del arreglo
• La condición: el valor a buscar
QUE SE PIDE:
Determinar La posición POS donde se
encuentra VALOR en el arreglo X.
Note que tiene dos posibles resultados:
• Encontrar VALOR en X
• No encontrar VALOR en X
Prof. María Beatriz Serrano V. 5/11
Computación II


























Al gunas Apl icaciones


UNION DE ARREGLOS UNIDIMENSIONALES

B A C ∪ =

La unión de dos arreglos se determina generando un nuevo arreglo con los elementos de ambos
arreglos. Esta es una de las aplicaciones que requieren de la búsqueda lineal para la generación del
nuevo arreglo. Es importante destacar que se agregara [insertara al final del arreglo] un valor
siempre y cuando este no exista ya en el arreglo.

Por ejemplo:
Dados los arreglos A y B, para determinar la unión de ambos es necesario generar un nuevo
arreglo, C, con los elementos de ambos arreglos. Nota: el nuevo arreglo, C, no debe contener
elementos repetidos.

Asumiendo que A y B almacenan los elementos que se especifican a continuación y que han sido
declarados y leídos previamente.

A = 10 20 11 56 78 11 95 15 10

B = 10 20 22 56 78 54

El vector unión seria:

C = 10 20 11 56 78 95 15 22 54
{
Proceso de Búsqueda Binaria
de VALOR en el arreglo X
}

{ Inicializaciones }
m := N div 2 + 1;
i := 1;
j := N;

{ Recorrido del arreglo buscando VALOR }
While ( ( A[ m ] <> VALOR ) and ( i <= j )) do
begin
if A[m] > VALOR then
j := m – 1
else
i := m + 1;
m := ( i + j ) div 2 + 1;
end;

{ Determinar si encontró o no }
If A[m] = VALOR then
POS := m;
COMO LOGRARLO:
Para llevar a cabo esta tarea se requiere
de tres pasos:
• Determinar la posición media del
arreglo
• Mientras el elemento en la posición
media sea diferente de VALOR
ejecute:
o Descartar una mitad del
arreglo
o Determinar el nuevo rango:
como la otra mitad
o Determinar el punto medio
del nuevo rango
• Determinar si encuentra o no el
VALOR
• Encuentra VALOR en el arreglo
cuando aborta el proceso de
búsqueda.
• No encuentra VALOR cuando
termina la búsqueda.
Prof. María Beatriz Serrano V. 6/11
Computación II

Para realizar esta tarea es necesario recorrer ambos arreglos y determinar que el elemento a
agregar en el nuevo arreglo NO exista ya en él.

Observe que la dimensión del nuevo arreglo, C, NO es la suma de las dimensiones de los arreglos
procesados, A y B, por lo que se requiere de una variable auxiliar que represente esta dimensión.

Los pasos a seguir para determinar la unión de dos arreglos son:
• Recorrer el primer arreglo
• Buscar que NO esté en C para ser insertado en C
• Recorrer el segundo arreglo
• Buscar que NO esté en C para ser insertado en C

Recuerde que al insertar un valor siempre será al final de C, y que debe actualizar su dimensión.



INTERSECCION DE ARREGLOS UNIDIMENSIONALES

B A C ∩ =

La intersección de dos arreglos se determina generando un nuevo arreglo con los elementos
comunes a ambos arreglos. Esta aplicación también requiere la implementación de la búsqueda
lineal para la generación del nuevo arreglo. Es importante destacar que se agregara [insertara al
final del arreglo] un valor siempre y cuando este no exista ya en el arreglo.

Por ejemplo:
Dados los arreglos A y B, para determinar la intersección de ambos es necesario generar un nuevo
arreglo, C, con los elementos comunes a ambos arreglos. Nota: el nuevo arreglo, C, no debe
contener elementos repetidos. Asumiendo que A y B almacenan los elementos que se especifican a
continuación y que han sido declarados y leídos previamente.

A = 10 20 11 56 78 11 95 15 10

B = 10 20 22 56 78 54

El vector intersección seria:

C = 10 20 56 78

Los pasos a seguir para determinar la intersección de dos arreglos son:
• Recorrer el arreglo A
• Buscar el elemento en B
• Si el elemento está en B
o Buscar que NO esté en C para ser insertado.

Observe que la dimensión del nuevo arreglo, C, NO es la suma de las dimensiones de los arreglos
procesados, A y B, por lo que se requiere de una variable auxiliar que represente esta dimensión.

> Believe none of what you hear,
> half of what you see
> and all of what you write

Prof. Manuel R. Fernández R. 7/11
Computación II

Búsqueda
1. Una pareja de novios, pronta a casarse, esta elaborando la lista de invitados para la recepción.
Cada uno tiene su lista de invitados en un archivo de datos, y se desea que Ud. elabore un
programa pascal que procese las listas y al final emita una lista con el nombre de los invitados a
la recepción. NOTA: un invitado no debe aparecer mas de una vez.
2. Una pareja de novios, pronta a casarse, esta elaborando la lista de invitados para la recepción.
El padre de la novia, quien financia la recepción, desea saber quienes son los amigos del novio
que no son amigos de la novia. Cada uno tiene su lista de invitados en un archivo de datos, y
se desea que Ud. elabore un programa pascal que procese las listas y emita el listado deseado
del padre.
3. Una pareja de novios, pronta a casarse, esta elaborando la lista de invitados para la recepción.
Pero a raíz de una pelea sobre “a quien invito y a quien no” se decidió invitar solamente a
aquellos amigos de ambos. Cada uno tiene su lista de invitados en un archivo de datos, y se
desea que Ud. elabore un programa pascal que determine la lista de invitados.
4. Se tiene en dos archivos, DATOS1.DAT y DATOS.DAT, la información correspondiente a los
afiliados a la Tarjeta de Crédito A y a la Tarjeta de Crédito B respectivamente; en cada registro
del archivo: el Nombre (de la columna 1 a la 25) y la Cedula de Identidad (a partir de la
columna 27). Elabore un programa Pascal que lea la información, la almacene en cuatro (4)
vectores y determine e imprima el listado (Nombre y Cedula) de las personas que tienen una
sola tarjeta.
5. Dado un arreglo tipo char que almacena un refrán, elabore un programa que determine cuantas
veces aparece cada vocal.
6. El archivo notas.dat contiene el Nombre, la cédula y la calificación final de los estudiantes de
computación del semestre pasado; por otra parte en el archivo retiro.dat se encuentra la
cédula de los alumnos que retiraron la asignatura después del primer parcial. Elabore un
programa Pascal que :
a) Lea la información de los archivos y guárdelas en vectores o un vector de registros.
b) Elimine los estudiantes que retiraron la asignatura
c) Imprima un listado con el nombre, cédula y nota.
7. Dado un arreglo de N elementos, elabore un programa que ordene el arreglo e imprima el
arreglo ordenado y el valor del índice en el arreglo original al lado de cada elemento.
Ordenado Posición del elemento
en el arreglo original
10 4
20 1
30 8
40 2
50 5
70 7
80 6
90 3
8. Se esta desarrollando un software para procesar palabras, y se tiene en el arreglo A, de M
elementos, todas las letras de un cierto texto; una letra por posición del vector. Elabore el
Diagrama de Flujo de un programa para encontrar una palabra leída y almacenada en el arreglo
X de L elementos. El programa deberá indicar la posición en A[M] donde comienza la palabra
Prof. Manuel R. Fernández R. 8/11
Computación II
X[L]. Si acaso no aparece deberá enviar un mensaje alusivo. A continuación se presenta un
ejemplo:

A = E L N O M B R E P U E D E I R S E G U I D O P O R U



La palabra PUEDE aparece en el arreglo A a partir de la posición 11
9. Dado un archivo de datos contentivo de un vector A de M elementos, el cual está ordenado de
manera ascendente, elaborar un programa PASCAL que realice el proceso de insertar varios
elementos K [leídos de teclado / pantalla] en las posiciones que les corresponda, de manera
que el vector permanezca ordenado.

Vector Original: A =
2 5 9 14 25 28
N = 6

Valores a insertar: 3, 15, 40

Vector Modificado: A =
2 3 5 9 14 15 25 28 37 40 43
N = 11
10. Desarrolle un programa Pascal que a medida que vaya leyendo una serie de valores, los vaya
insertando en un vector (inicialmente sin elementos) de forma tal que lo mantenga ordenado.
Imprima el vector resultante.
Valores Vector
3 (3)
5 (3,5)
-1 (-1,3,5)
4 (-1,3,4,5)
16 (-1,3,4,5,16)
11. Al finalizar la recepción de la boda, el padre de la novia decide regresar a casa caminando. El
camino, desde el lugar de la recepción a su casa esta representado por un arreglo
unidimensional de N elementos ( donde N > 20 ). Un extremo representa la casa del padre de
la novia y el otro extremo el lugar de la recepción. Cada elemento del arreglo representa un
paso del padre de la novia. En vista de que el padre esta algo mareado, el camina hacia
delante y hacia atrás.
Se pide que Ud. desarrolle un programa que simule el trayecto del padre de la novia, teniendo
las siguientes consideraciones:
Ud. comienza a simular la trayectoria una vez que el padre de la novia ha comenzado su
retorno a casa. Para lograr esto comienza a partir de una posición inicial obtenida
aleatoriamente
Cada avance / retroceso se determina según valor aleatorio X entre 0 y N/8 [parte entera], de
la siguiente manera: si C es par avanza X pasos hacia su casa, si X es impar retrocede X pasos.
Es requisito que su programa imprima, a cada avance o retroceso, la trayectoria del padre.
Para lograr esto Ud. podría contar en el camino las veces que el padre paso por ese trayecto.
Recepción 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 casa

Recepción 1 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 casa

Recepción 1 1 2 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 casa
El arreglo represente los pasos dados por el padre: 7 pasos adelante, 4 pasos atrás, y un paso
adelante.
X = P U E D E
Prof. Manuel R. Fernández R. 9/11
Computación II
12. Dado un vector A de N elementos, elabore un programa Pascal que determine cual es el
elemento que más se repite (llamado también MODA).
13. Dado un vector A de N elementos, elabore un programa Pascal que elimine los elementos del
vector A que más se repiten.
14. Dado un vector A de M componentes, desarrollar un programa Pascal que cuente las
componentes del vector que no están repetidas.
Ejemplo:
A = 5 7 4 9 5 2 3 9
Las componentes que no están repetidas son 4
15. Sean dos vectores: A[N] y B[M] cuyos contenidos son respectivamente, las placas de los
automóviles que transitan en un determinado día por una avenida ( A[N] ), y se toman placas
nuevamente veinte días después, B[M]. Desarrolle un programa que determine e imprima:
a) un vector de placas con los carros que pasaron por dicha avenida la segunda vez que se
tomo la información (B[M]) pero no la primera vez (A[N])
b) Porcentaje de vehículos que pasaron ambas veces.

16. Los insectos pertenecientes al Club Los Bichos indican su edad en horas, en la cual no se
conoce el numero de dígitos. Desarrolle un programa que determine en cuantas edades se
cumplen que el primero, central y ultimo de los dígitos son iguales. El digito central en el caso
de que la edad este formada por un numero par de dígitos estará formado por los dos dígitos
centrales.
Insecto 1 5 7 4 9 8 2 3 3

Insecto 2 7 4 9 6 2 1 9

17. Dada las previas de los estudiantes de Computación, en un archivo de datos que contiene
Nombre Cédula y previa, ordenadas alfabéticamente; y la nota del examen final almacenada en
otro archivo que contiene cédula y nota, ordenada por nota, elabore un programa que
determine la definitiva de los estudiantes. Definitiva: 0.6previa + 0.4final.
18. En un archivo de datos se tiene, ordenado por código, el código y el precio de los artículos de
deporte de una tienda. Elabore un programa de consulta para determinar el precio de un
articulo dado. Implemente el método de búsqueda binaria.
19. En tres archivos de datos de nombre Materia1.dat, Materia2.dat, Materia3.dat se tienen los
nombres y cédulas de identidad de los alumnos inscritos en las asignaturas Física I, Funciones
Vectoriales y Ecuaciones Diferenciales. Desarrolle un programa Pascal que haciendo uso de
subprogramas lea el contenido de los archivos almacenándolos en tres vectores de registros y
genere un vector de registros con la información de los estudiantes que están cursando las tres
asignaturas.
N = 8, Valores considerados: 5,9,8,3
5<>9<>8<>3


N = 7, Valores considerados: 7,6,9
7<>6<>9
Prof. Manuel R. Fernández R. 10/11
Computación II
20. a) Desarrolle un subprograma PASCAL que convierta la columna K de la Matriz A[MA,NA] en un
vector V[MA]

b) Desarrolle un subprograma PASCAL que inserte en la fila K de la matriz A[MA,NA] los
elementos de un vector V[NA]. Incluya todos los posibles casos: que K sea 1; que K sea una
valor cualquiera comprendido entre 1 y MA; y que K sea igual a MA+1
c) Haciendo uso de los dos subprogramas anteriores, genere una matriz B[MB,NB] como la
traspuesta de A[MA,NA]
d) Desarrolle un subprograma PASCAL que calcule la posición donde iría un elemento X para
que la columna 1 de A[MA,NA] permanezca ordenada.

e) Desarrolle un programa PASCAL donde dadas las dimensiones M y N de una matriz, realice
las siguientes operaciones:
i) Rellene por filas la matriz B[M,N] con los números enteros positivos y consecutivos
comenzando por 1. Por ejemplo, se M=2 y N=3, sería:
ii) Genere una matriz C[MC,NC] como la traspuesta de B[M,N]
iii) Usando los subprogramas anteriores, genere una matriz BO a partir de C, de la siguiente
manera:
(1) Primera fila de BO, igual a la primera columna de C
(2) Las demás filas serán insertadas o anexadas a la matriz C donde le correspondería
para que el primer elemento de la columna de C, se mantenga ordenado al colocarlo
como primer elemento de la fila de BO que se está insertando.
iv) Imprima las matrices B, C y BO una al lado de la otra.
|
|
|
.
|

\
| −
= ⇒ =
|
|
|
.
|

\
|



=
6
7
8
2 K si
0 6 6 5
2 3 7 2
4 0 8 1
V A
¦
¹
¦
´
¦
⇒ =
⇒ =
⇒ =
|
|
|
.
|

\
|
− −
− −
=
4 es inserción de posición La 20 X
1 es inserción de posición La -3 X
3 es inserción de posición La 4 X
si
3 6 6 8
2 3 7 0
4 10 8 1
A
|
|
.
|

\
|
=
6 5 4
3 2 1
B
Prof. Manuel R. Fernández R. 11/11
Computación II

Búsqueda Binaria La búsqueda binaria permite buscar valores mas eficientemente que la búsqueda secuencial. Al estar ésta ordenada puede descartarse la mitad que se sabe no es posible que este la información. Computación II 2/11 . Veamos algunos ejemplos: Prof. sin embargo.Ejemplo de Búsqueda Secuencial: Valor a buscar en el arreglo A: VALOR = 33 Primera iteración: A[1]=1 <> VALOR A= 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 i=1 Segunda iteración: A[2]=11 <> VALOR A= 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 i=2 Tercera iteración: A[3]=21 <> VALOR A= 1 11 21 25 i=3 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 Cuarta iteración: A[4]=25 <> VALOR A= 1 11 21 25 26 i=4 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 Quinta iteración: A[5]=26 <> VALOR A= 1 11 21 25 26 33 i=5 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 Sexta iteración: A[6]=33 = VALOR A= 1 11 21 25 26 33 38 i=6 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 Note que si el valor NO se encuentra en el arreglo. entonces se recorre todo el arreglo. En este caso. María Beatriz Serrano V. El método se basa en el conocimiento de la información. el método requiere que la información sobre la cual se va a buscar este ordenada. siempre se cumple que A[i] <> VALOR. posición a posición hasta agotar los elementos.

i > j Prof.EJEMPLO 1: CASO EN QUE NO SE ENCUENTRA EL VALOR Valor a buscar en el arreglo A: VALOR = 75 Primera iteración: A[m]=59 <> VALOR A= 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 i=1 VALOR > A[m] Segunda iteración: A[m]=77 <> VALOR A= 1 m=13 se descarta la primera mitad j=25 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 i=14 VALOR < A[m] Tercera iteración: A[m]=67 <> VALOR A= 1 m=20 j=25 se descarta la segunda mitad 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 i=14 VALOR > A[medio] Cuarta iteración: A[m]=72 = VALOR A= 1 m=17 j=19 se descarta la primera mitad 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 VALOR > A[medio] Quinta iteración: A[m]=76 = VALOR A= 1 m=19 j =19 se descarta la primera mitad i=18 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 j=19 i=20 m=19 Termina la búsqueda. Computación II 3/11 . María Beatriz Serrano V. VALOR NO se encuentra en posición: m.

María Beatriz Serrano V.EJEMPLO 2: CASO EN QUE SE ENCUENTRA EL VALOR Valor a buscar en el arreglo A: VALOR = 48 Primera iteración: A[m]=59 <> VALOR A= 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 i=1 VALOR < A[m] Segunda iteración: A[m]=38 <> VALOR A= 1 m=13 se descarta la segunda mitad j=25 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 i=1 m=7 VALOR > A[m] j=12 se descarta la primera mitad Tercera iteración: A[m]=50 <> VALOR A= 1 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 i=8 VALOR < A[m] Cuarta iteración: A[m]=48 = VALOR A= 1 m=11 j=12 se descarta la segunda mitad 11 21 25 26 33 38 40 42 48 50 56 59 60 62 64 67 72 76 77 86 88 92 94 97 m=10 j=10 Termina la búsqueda. VALOR se encuentra en posición: m BÚSQUEDA BINARIA: INSTRUCCIONES: QUE SE TIENE: Para llevar a cabo esta tarea se requiere de la siguiente información de entrada: • El arreglo ORDENADO • La dimensión del arreglo • La condición: el valor a buscar QUE SE PIDE: Determinar La posición POS donde se encuentra VALOR en el arreglo X. Note que tiene dos posibles resultados: • Encontrar VALOR en X • No encontrar VALOR en X i=8 Prof. Computación II 4/11 .

Por ejemplo: Dados los arreglos A y B. Nota: el nuevo arreglo. Esta es una de las aplicaciones que requieren de la búsqueda lineal para la generación del nuevo arreglo. end. con los elementos de ambos arreglos. i := 1. María Beatriz Serrano V. Algunas Aplicaciones UNION DE ARREGLOS UNIDIMENSIONALES C = A∪ B La unión de dos arreglos se determina generando un nuevo arreglo con los elementos de ambos arreglos. Es importante destacar que se agregara [insertara al final del arreglo] un valor siempre y cuando este no exista ya en el arreglo. Asumiendo que A y B almacenan los elementos que se especifican a continuación y que han sido declarados y leídos previamente. { Determinar si encontró o no } If A[m] = VALOR then POS := m. C. • No encuentra VALOR cuando termina la búsqueda. A B = = 10 10 20 20 11 22 56 56 78 78 11 54 95 15 10 El vector unión seria: C = 10 20 11 56 78 95 15 22 54 Prof. para determinar la unión de ambos es necesario generar un nuevo arreglo. no debe contener elementos repetidos. Computación II 5/11 . { Recorrido del arreglo buscando VALOR } While ( ( A[ m ] <> VALOR ) and ( i <= j )) do begin if A[m] > VALOR then j := m – 1 else i := m + 1. { Proceso de Búsqueda Binaria de VALOR en el arreglo X } { Inicializaciones } m := N div 2 + 1. m := ( i + j ) div 2 + 1. j := N. C.COMO LOGRARLO: Para llevar a cabo esta tarea se requiere de tres pasos: • Determinar la posición media del arreglo • Mientras el elemento en la posición media sea diferente de VALOR ejecute: o Descartar una mitad del arreglo o Determinar el nuevo rango: como la otra mitad o Determinar el punto medio del nuevo rango • Determinar si encuentra o no el VALOR • Encuentra VALOR en el arreglo cuando aborta el proceso de búsqueda.

Los pasos a seguir para determinar la unión de dos arreglos son: • Recorrer el primer arreglo • Buscar que NO esté en C para ser insertado en C • Recorrer el segundo arreglo • Buscar que NO esté en C para ser insertado en C Recuerde que al insertar un valor siempre será al final de C. para determinar la intersección de ambos es necesario generar un nuevo arreglo. NO es la suma de las dimensiones de los arreglos procesados.Para realizar esta tarea es necesario recorrer ambos arreglos y determinar que el elemento a agregar en el nuevo arreglo NO exista ya en él. con los elementos comunes a ambos arreglos. Computación II 6/11 . C. > half of what you see > and all of what you write Prof. NO es la suma de las dimensiones de los arreglos procesados. C. y que debe actualizar su dimensión. Asumiendo que A y B almacenan los elementos que se especifican a continuación y que han sido declarados y leídos previamente. INTERSECCION DE ARREGLOS UNIDIMENSIONALES C = A∩ B La intersección de dos arreglos se determina generando un nuevo arreglo con los elementos comunes a ambos arreglos. A B = = 10 10 20 20 11 22 56 56 78 78 11 54 95 15 10 El vector intersección seria: C = 10 20 56 78 Los pasos a seguir para determinar la intersección de dos arreglos son: • Recorrer el arreglo A • Buscar el elemento en B • Si el elemento está en B o Buscar que NO esté en C para ser insertado. C. no debe contener elementos repetidos. por lo que se requiere de una variable auxiliar que represente esta dimensión. Observe que la dimensión del nuevo arreglo. por lo que se requiere de una variable auxiliar que represente esta dimensión. A y B. Nota: el nuevo arreglo. > Believe none of what you hear. A y B. Observe que la dimensión del nuevo arreglo. María Beatriz Serrano V. Por ejemplo: Dados los arreglos A y B. Es importante destacar que se agregara [insertara al final del arreglo] un valor siempre y cuando este no exista ya en el arreglo. C. Esta aplicación también requiere la implementación de la búsqueda lineal para la generación del nuevo arreglo.

pronta a casarse. Fernández R. 7. El programa deberá indicar la posición en A[M] donde comienza la palabra Prof. 4. desea saber quienes son los amigos del novio que no son amigos de la novia. esta elaborando la lista de invitados para la recepción.DAT.dat se encuentra la cédula de los alumnos que retiraron la asignatura después del primer parcial. Ordenado 10 20 30 40 50 70 80 90 Posición del elemento en el arreglo original 4 1 8 2 5 7 6 3 8. Elabore un programa Pascal que : a) Lea la información de los archivos y guárdelas en vectores o un vector de registros. una letra por posición del vector. Computación II 7/11 . Cada uno tiene su lista de invitados en un archivo de datos. elabore un programa pascal que procese las listas y al final emita una lista con el nombre de los invitados a la recepción. en cada registro del archivo: el Nombre (de la columna 1 a la 25) y la Cedula de Identidad (a partir de la columna 27). y se desea que Ud. y se tiene en el arreglo A. pronta a casarse. Una pareja de novios. 3. Elabore un programa Pascal que lea la información. por otra parte en el archivo retiro. Una pareja de novios. 5. y se desea que Ud. b) Elimine los estudiantes que retiraron la asignatura c) Imprima un listado con el nombre. de M elementos. la información correspondiente a los afiliados a la Tarjeta de Crédito A y a la Tarjeta de Crédito B respectivamente. la cédula y la calificación final de los estudiantes de computación del semestre pasado. Manuel R. Se esta desarrollando un software para procesar palabras. elabore un programa pascal que determine la lista de invitados. DATOS1. pronta a casarse. elabore un programa que ordene el arreglo e imprima el arreglo ordenado y el valor del índice en el arreglo original al lado de cada elemento.DAT y DATOS. esta elaborando la lista de invitados para la recepción. Cada uno tiene su lista de invitados en un archivo de datos. cédula y nota. Cada uno tiene su lista de invitados en un archivo de datos. El padre de la novia. 6. quien financia la recepción. Una pareja de novios. todas las letras de un cierto texto. NOTA: un invitado no debe aparecer mas de una vez.Búsqueda 1. Se tiene en dos archivos. elabore un programa pascal que procese las listas y emita el listado deseado del padre. Elabore el Diagrama de Flujo de un programa para encontrar una palabra leída y almacenada en el arreglo X de L elementos.dat contiene el Nombre. esta elaborando la lista de invitados para la recepción. elabore un programa que determine cuantas veces aparece cada vocal. la almacene en cuatro (4) vectores y determine e imprima el listado (Nombre y Cedula) de las personas que tienen una sola tarjeta. El archivo notas. 2. Pero a raíz de una pelea sobre “a quien invito y a quien no” se decidió invitar solamente a aquellos amigos de ambos. Dado un arreglo tipo char que almacena un refrán. Dado un arreglo de N elementos. y se desea que Ud.

16) 11.4. teniendo las siguientes consideraciones: Ud. Dado un archivo de datos contentivo de un vector A de M elementos.5) 4 (-1. Desarrolle un programa Pascal que a medida que vaya leyendo una serie de valores.X[L]. si X es impar retrocede X pasos. En vista de que el padre esta algo mareado.3. Para lograr esto Ud. desarrolle un programa que simule el trayecto del padre de la novia. 15.3. desde el lugar de la recepción a su casa esta representado por un arreglo unidimensional de N elementos ( donde N > 20 ). Se pide que Ud. de manera que el vector permanezca ordenado. de la siguiente manera: si C es par avanza X pasos hacia su casa. 40 A= 2 3 5 9 14 15 25 28 37 40 43 A= 2 5 9 14 25 28 N=6 Vector Modificado: N = 11 10. podría contar en el camino las veces que el padre paso por ese trayecto. Valores Vector 3 (3) 5 (3. el padre de la novia decide regresar a casa caminando. Manuel R. Recepción Recepción Recepción 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 casa 1 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 casa 1 1 2 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 casa El arreglo represente los pasos dados por el padre: 7 pasos adelante. el cual está ordenado de manera ascendente. Un extremo representa la casa del padre de la novia y el otro extremo el lugar de la recepción. Si acaso no aparece deberá enviar un mensaje alusivo.5) -1 (-1. la trayectoria del padre. Fernández R.4. Prof. elaborar un programa PASCAL que realice el proceso de insertar varios elementos K [leídos de teclado / pantalla] en las posiciones que les corresponda. Es requisito que su programa imprima. comienza a simular la trayectoria una vez que el padre de la novia ha comenzado su retorno a casa. Para lograr esto comienza a partir de una posición inicial obtenida aleatoriamente Cada avance / retroceso se determina según valor aleatorio X entre 0 y N/8 [parte entera]. Vector Original: Valores a insertar: 3. a cada avance o retroceso.3. los vaya insertando en un vector (inicialmente sin elementos) de forma tal que lo mantenga ordenado.5. ejemplo: A= X= E L N O M B R E P U E D E I R A continuación se presenta un P O R U S E G U I D O P U E D E La palabra PUEDE aparece en el arreglo A a partir de la posición 11 9. Imprima el vector resultante. El camino. 4 pasos atrás. Cada elemento del arreglo representa un paso del padre de la novia. Computación II 8/11 . Al finalizar la recepción de la boda. y un paso adelante. el camina hacia delante y hacia atrás.5) 16 (-1.

dat se tienen los nombres y cédulas de identidad de los alumnos inscritos en las asignaturas Física I. Valores considerados: 5. En tres archivos de datos de nombre Materia1. 19. y se toman placas nuevamente veinte días después. Elabore un programa de consulta para determinar el precio de un articulo dado.3 5<>9<>8<>3 Valores considerados: 7. Definitiva: 0. El digito central en el caso de que la edad este formada por un numero par de dígitos estará formado por los dos dígitos centrales. Sean dos vectores: A[N] y B[M] cuyos contenidos son respectivamente. Materia2. 16. 14. Fernández R. desarrollar un programa Pascal que cuente las componentes del vector que no están repetidas.6. Insecto 1 5 7 4 9 8 2 3 3 N = 8. ordenadas alfabéticamente. en un archivo de datos que contiene Nombre Cédula y previa. Funciones Vectoriales y Ecuaciones Diferenciales. Prof. ordenado por código. elabore un programa Pascal que determine cual es el elemento que más se repite (llamado también MODA). Los insectos pertenecientes al Club Los Bichos indican su edad en horas.6previa + 0. Ejemplo: A= 5 7 4 9 5 2 3 9 Las componentes que no están repetidas son 4 15.9 7<>6<>9 Insecto 2 7 4 9 6 2 1 9 N = 7. 17. Dado un vector A de N elementos. Dado un vector A de N elementos. Computación II 9/11 . Manuel R. En un archivo de datos se tiene. central y ultimo de los dígitos son iguales. elabore un programa Pascal que elimine los elementos del vector A que más se repiten. Dada las previas de los estudiantes de Computación.dat. Materia3. el código y el precio de los artículos de deporte de una tienda.8. 18. elabore un programa que determine la definitiva de los estudiantes. Implemente el método de búsqueda binaria. Desarrolle un programa que determine en cuantas edades se cumplen que el primero. y la nota del examen final almacenada en otro archivo que contiene cédula y nota. en la cual no se conoce el numero de dígitos.4final. las placas de los automóviles que transitan en un determinado día por una avenida ( A[N] ). B[M]. Desarrolle un programa Pascal que haciendo uso de subprogramas lea el contenido de los archivos almacenándolos en tres vectores de registros y genere un vector de registros con la información de los estudiantes que están cursando las tres asignaturas. Desarrolle un programa que determine e imprima: a) un vector de placas con los carros que pasaron por dicha avenida la segunda vez que se tomo la información (B[M]) pero no la primera vez (A[N]) b) Porcentaje de vehículos que pasaron ambas veces.dat.12. ordenada por nota.9. Dado un vector A de M componentes. 13.

igual a la primera columna de C (2) Las demás filas serán insertadas o anexadas a la matriz C donde le correspondería para que el primer elemento de la columna de C. Prof.NA] en un vector V[MA] 0 4 1 −8  − 8     A = 2 7 − 3 2  si K = 2 ⇒ V =  7  5  6 6 − 6 0     b) Desarrolle un subprograma PASCAL que inserte en la fila K de la matriz A[MA.NA] d) Desarrolle un subprograma PASCAL que calcule la posición donde iría un elemento X para que la columna 1 de A[MA. se M=2 y N=3. Computación II 10/11 . Manuel R. realice las siguientes operaciones: i) Rellene por filas la matriz B[M. y que K sea igual a MA+1 c) Haciendo uso de los dos subprogramas anteriores.NB] como la traspuesta de A[MA. genere una matriz BO a partir de C. Por ejemplo. que K sea una valor cualquiera comprendido entre 1 y MA. 4  − 1 − 8 10  X = 4 ⇒ La posición de inserción es 3    A= 0 7 3 2  si  X = -3 ⇒ La posición de inserción es 1  8 X = 20 ⇒ La posición de inserción es 4 6 − 6 − 3    e) Desarrolle un programa PASCAL donde dadas las dimensiones M y N de una matriz.N] iii) Usando los subprogramas anteriores. de la siguiente manera: (1) Primera fila de BO. Fernández R.NA] los elementos de un vector V[NA].NA] permanezca ordenada. C y BO una al lado de la otra. a) Desarrolle un subprograma PASCAL que convierta la columna K de la Matriz A[MA. sería:  1 2 3 B=  4 5 6    ii) Genere una matriz C[MC. genere una matriz B[MB. iv) Imprima las matrices B. Incluya todos los posibles casos: que K sea 1. se mantenga ordenado al colocarlo como primer elemento de la fila de BO que se está insertando.20.N] con los números enteros positivos y consecutivos comenzando por 1.NC] como la traspuesta de B[M.

Manuel R.Prof. Computación II 11/11 . Fernández R.

Sign up to vote on this title
UsefulNot useful