Upload
independent
View
0
Download
0
Embed Size (px)
Citation preview
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
PRÁCTICA Nº 1: ARREGLOS Y OPERACIONES CON ARREGLOS OBJETIVOS
Implementar algoritmos de búsqueda, ordenación, inserción y eliminación en arreglos unidimensionales. FUNDAMENTO TEÓRICO
OPERACIONES BÁSICAS CON ARREGLOS.
1. Búsqueda.
La búsqueda consiste en encontrar un determinado valor dentro de un conjunto de datos, para recuperar alguna información asociada con el valor buscado.
Existen diferentes formas de realizar esta operación; en otras palabras hay distintos métodos o técnicas para realizar búsqueda en vectores.
Búsqueda secuencial o lineal.
Búsqueda Binaria.
Búsqueda Hash.
Arboles de búsqueda.
2. Ordenación
La ordenación se refiere a la operación de organizar los elementos de un vector en algún orden dado: ascendente o descendente.
Existen diferentes métodos o técnicas para organizar los elementos de un arreglo. Los más comunes son:
Método de burbuja
Método de burbuja mejorado.
Ordenación por selección
Inserción o método de la baraja
Shell
Binsort o por urnas
Por montículos o heapsort
Por mezcla o mergesot
Método de la sacudida o shackersort
Rapid sort o quick sort
Por árboles.
3. Inserción
Esta operación consiste en adicionar un nuevo elemento al arreglo. Se debe tener en cuenta:
1. Que no sobrepase el tamaño máximo declarado para el vector. 2. La operación puede darse para un arreglo ordenado o desordenado. 3. Si el arreglo está desordenado, se incrementa en uno el número de elementos y en esa posición N + 1
se inserta el nuevo elemento, 4. Si el arreglo está ordenado hay que
o 4-1 Buscar el lugar dentro del arreglo donde se debe inserta el nuevo valor para que continúe el vector ordenado.
o 4-2 Correr todos los elementos del vector una posición a la derecha, para abrirle espacio al nuevo elemento, a partir del lugar donde debe insertarse el nuevo dato.
o 4-3 Insertar el nuevo elemento del vector en el espacio que le corresponde.
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
4. Eliminación
Consiste en eliminar un elemento del arreglo, puede darse cuando el arreglo está desordenado u ordenado. El proceso de eliminación sigue los pasos que se describen a continuación:
Verificar que el arreglo no esté vacío.
Buscar la posición donde se encuentra el elemento a borrar.
Correr los elementos una posición a la izquierda, a partir de la posición siguiente donde se encuentra el valor a borrar.
Disminuir el número de elementos del vector en uno.
Enviar un mensaje en caso de que el elemento a borrar no esté dentro del arreglo.
PORQUE USAR ARREGLOS
Caso de ejemplo: Se tiene las calificaciones de un grupo de 30 alumnos. Se requiere saber cuántos alumnos tienen un promedio de notas superior al promedio del grupo. ¿Cuál sería el algoritmo para resolver este problema, haciendo uso sólo de datos simples?
Solución por Doble lectura: i y Cont son variables enteras, AC, Promedio y Nota son reales
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
INICIO
FIN
AC=0i=1
MIENTRASi<=30
Leer Nota
AC=AC+Notai=i+1
Promedio=AC/30AC=0i=1
MIENTRASi<=30
Leer Nota
SINota>Promedio
Cont=Cont+1
i=i+1
EscribirCont
V F
Solución por Muchas Variables: Cont es una variable entera, AC, Promedio y Nota1…. Nota30 son reales.
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
INICIO
AC=Nota1+Nota2+ +Nota30Promedio=Ac/30
Cont=0
SINota1>Promedio
Cont=Cont+1
Leer Nota1Leer Nota2
Leer Nota30
SINota2>Promedio
Cont=Cont+1
SINota30>Promedio
Cont=Cont+1
EscribirCont
FIN
V F
V F
V F
PROCEDIMIENTO Solución usando Arreglos
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
INICIO
SINota30>Promedio
Cont=Cont+1
EscribirCont
FIN
AC=0
Para i=1 to 30
Leer Nota[i]
AC=AC+Nota[i]
Promedio=AC/30
Para i=1 to 30
V F
El ejemplo anterior muestra los inconvenientes que se encuentran al hacer uso sólo de datos simples. En el primer caso se debe efectuar una doble lectura de datos y en el segundo caso se requieren muchas variables para evitar la doble lectura. Cuando la solución de problemas haciendo uso sólo de datos simples es muy compleja, se recurre al uso de datos estructurados. Para la solución del problema anterior hicimos uso de Arreglos Unidimensionales. Operaciones con Arreglos Desordenados
1. Crear un programa que permita realizar todas las operaciones con arreglos desordenados: (Lectura, Escritura, Insertar, Buscar, Eliminar, Modificar y Ordenar los elementos del Arreglo). Mostrar el Número de Elementos y el Mayor de todos ellos. Inserción:
SIn<100
n=n+1Error: el
arreglo está lleno
V[n]=y
V F
Eliminación
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
SIn>=1
Cen=0
MIENTRASi<=n y Cen=0
SIV[i]=x
Cen=1
X no está en el arreglo
V F
SICen=0
i=1Error:
Arreglo esta vacio
V
n=n+1
Para k=1->n
V[k]=v[k+1]
Modificación:
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
SIn>=1
Cen=0
MIENTRASi<=n y Cen=0
SIV[i]=x
X no está en el arreglo
V F
SICen=0
i=1Error:
Arreglo esta vacio
V
V[i]=x
Cen=1
i=i+1
V F
Operaciones con Datos Ordenados 2. Crear un programa que permita realizar todas las operaciones con arreglos Desordenados: (Lectura,
Escritura, Insertar, Buscar, Eliminar y Modificar los elementos del arreglo). Mostrar el número de elementos y el máximo índice. Búsqueda
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
i=1
MIENTRASi<=n y v[i]<w
SIi<n y v[i]>w
i=i+1
Pos=
V F
Pos=i
Inserción
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
SIn<100
BuscarRecibe: x,n,wDevuelve: pos
Error: No hay espacio
SIPos>0
Elemento w ya existe
n=n+1
pos=pos*-1
Para i=1 (pos+1) 1--
V[i]=v[i-1]
V[pos]=w
Eliminación
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas
SIn>0
BuscarRecibe: x,n,wDevuelve: pos
Error: El arreglo esta
vacio
SIPos<0
Elemento w no existe
n=n+1
Para i=pos n
V[i]=v[i+1]
V F
Modificación
SIn>0
BuscarRecibe: x,n,wDevuelve: pos
Error: El arreglo esta
vacio
SIPos<0
Elemento w no existe
V[pos]=w
V F
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas EJERCICIOS PROPUESTOS 1. Realice un programa que lea 20 números enteros cada uno de los cuales éste entre 10 y 100. Conforme
cada número sea leído, imprima sólo si no es un duplicado de un número leído anteriormente. 2. Escriba un programa en C que simule el lanzamiento de dos dados. El programa deberá utilizar la función
rand para el lanzamiento de los dados, entonces la suma de los dados debe ser calculada. Nota: en vista de que cada dado puede mostrar valores del 1 al 6, la suma de los dados deberá estar comprendida entre 2 o 12, siendo la suma más frecuente 7 y la menos frecuente 2 a 12. Su programa deberá realizar 36000 lanzamientos. Utilice un arreglo para contar el número de veces que aparece cada suma posible. Imprima los resultados en forma tabular y determine el porcentaje de veces que salió un 7, un 2 o un 12.
3. Una pequeña aerolínea acaba de adquirir una computadora para un sistemas automatizado de reservaciones. El presidente le ha solicitado a usted que programa el nuevo sistema en C. Usted debe escribir un programa que asigne asientos en cada vuelo del único avión de la aerolínea (capacidad 10 asientos).
Su programa deberá mostrar el siguiente menú de alternativas. Ingrese 1 para Fumadores. Ingrese 2 para No fumadores.
4. Si la persona escribe 1, entonces su programa deberá asignar un asiento en la sección de fumar (asientos del 1 al 5) si la persona escribe 2, entonces su programa deberá asignar un asiento en la sección de no fumar (asientos del 6 al 10). Si el programa a continuación deberá imprimir un pase de abordaje, indicando el número de asiento de la persona y si está en la sección de fumar o no fumar del avión. Su programa no deberá, naturalmente, asignar nunca un asiento que ya haya sido asignado. Cuando esté llena la sección de fumar, su programa deberá solicitar a la persona, si le parece ser colocada en la sección de no fumar (o viceversa). Si dice que sí, entonces efectúe la asignación apropiada de asiento. Si dice que no, entonces imprima el mensaje “Siguiente Avión disponible en 3 Horas”.
5. Imagine una tortuga que camina por la habitación bajo un programa en C. La tortuga sujeta una pluma dos posiciones posibles, arriba o abajo. Cuando la pluma está abajo, la tortuga traza formas conforme mueve; cuando la pluma está arriba, la tortuga se mueve libremente, sin escribir nada. En este problema simularemos la operación de la tortuga. Utilice un arreglo de 50 por 50 de nombre Piso que inicializa a ceros. Lea los comandos partiendo de un arreglo que los contenga. Lleve control en todo momento de la posición actual de la tortuga, así como de si la pluma en ese momento está arriba o abajo. Suponga que la tortuga siempre empieza a partir de la posición 0,0 en el piso, con su pluma arriba. El conjunto de comandos de la tortuga que se programa debe procesar, son como sigue:
Comando Significado
1 Pluma Arriba
2 Pluma Abajo
3 Giro a la Derecha
4 Giro a la Izquierda
5,10 Moverse hacia adelante 10 espacios (u otro número distinto a 10)
6 Imprimir el arreglo 50 x 50
9 Fin de los datos (ver centinela)
Suponga que la tortuga está en algún logar cerca del centro del piso. El siguiente “programa” dibujaría e imprimiría un cuadrado 12 por 12: 2 5,12 3 5,12 3 5,12 3 5,12 1 6 9 Conforme la tortuga se mueve con la pluma abajo, defina los elementos apropiados del arreglo Piso, al valor 1. Cuando se da el comando 6 (imprimir), siempre que exista en el arreglo un 1, despliegue un asterisco, o cualquier otro carácter que seleccione. Siempre que aparezca un 0, despliegue un espacio vacío. Escriba