12
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.

PRÁCTICA Nº 1: ARREGLOS Y OPERACIONES CON ARREGLOS

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

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Facultad de Ingeniería E.A.P. Ingeniería en Informática y Sistemas

un programa en C para poner en operación las capacidades gráficas de la tortuga discutidas aquí.