Ingeniería en Sistemas de Información

Anuncio
Ingeniería en Sistemas de Información
Algoritmos y estructuras de datos
Guía de ejercicios N2 v1.3
Algoritmos y estructuras de datos - Guía de ejercicios N2 v1.3
Índice
Índice ....................................................................................................................................................... 2
Guía de resolución .................................................................................................................................. 3
Estructuras de control – Subprogramas .............................................................................................. 3
200. ........................................................................................................................................... 3
201. ........................................................................................................................................... 3
202. ........................................................................................................................................... 3
203. ........................................................................................................................................... 3
204. ........................................................................................................................................... 3
205. ........................................................................................................................................... 3
206. ........................................................................................................................................... 4
207. ........................................................................................................................................... 4
208. ........................................................................................................................................... 4
209. ........................................................................................................................................... 4
210. ........................................................................................................................................... 4
211. ........................................................................................................................................... 5
212. ........................................................................................................................................... 5
213. ........................................................................................................................................... 5
214. ........................................................................................................................................... 5
215. ........................................................................................................................................... 5
216. ........................................................................................................................................... 5
217. ........................................................................................................................................... 6
218. ........................................................................................................................................... 6
219. ........................................................................................................................................... 6
220. ........................................................................................................................................... 7
221. ........................................................................................................................................... 7
222. ........................................................................................................................................... 7
223. ........................................................................................................................................... 7
224. ........................................................................................................................................... 7
225. ........................................................................................................................................... 8
226. ........................................................................................................................................... 8
227. ........................................................................................................................................... 8
228. ........................................................................................................................................... 8
229. ........................................................................................................................................... 9
Referencias ........................................................................................................................................... 10
Página 2 de 10
Algoritmos y estructuras de datos - Guía de ejercicios N2 v1.3
Guía de resolución
La solución de los ejercicios consiste en el desarrollo de los pasos que se mencionan a continuación:
1)
2)
3)
4)
5)
6)
7)
8)
9)
Comprensión del enunciado
Especificación de los datos de entrada y de salida
Confección de la estrategia de solución (Top-Down)
Confección del algoritmo de resolución (refinamientos sucesivos)
Seguimiento del algoritmo
Codificación
Compilación
Preparación del lote de prueba
Ejecución y depuración del programa
Estructuras de control – Subprogramas
200.
En la URL http://armorgames.com/play/2205/light-bot se accede a un juego flash que consiste en
definir los movimientos de un robot a través de ciertos obstáculos. El ejercicio consiste en jugar el
juego y documentar la solución encontrada para cada escenario o pantalla. Se debe entregar un
documento digital indicando las soluciones encontradas. Se recomienda utilizar la función
PrintScreen.
201.
Diseñar un procedimiento que solicite el ingreso de dos números e imprima la suma.
202.
Diseñar un procedimiento que imprima el siguiente mensaje y se quede esperando a que el usuario
presione la tecla Enter para continuar con la ejecución del mismo retornando el control al
subprograma llamador.
PRESIONE ENTER
PARA CONTINUAR
203.
Diseñar un procedimiento que aplique los procedimientos definidos en los dos ejercicios anteriores
para mostrar por pantalla el resultado de la suma de dos números.
204.
Definir un procedimiento que solicite el ingreso de 5 valores e imprima los tres mayores.
205.
Dados los coeficientes de una ecuación polinómica de segundo grado, calcular sus raíces, para lo
cual se debe:
a) Definir procedimientos para la entrada de datos con los mensajes aclaratorios
correspondientes
b) Calcular las raíces para cada uno de los tres casos posibles
c) Para la salida, definir:
i. Un procedimiento que permita imprimir los resultados en el caso de tener dos
raíces reales
ii. Un procedimiento para imprimir el resultado en el caso de obtenerse una raíz
real doble
Página 3 de 10
Algoritmos y estructuras de datos - Guía de ejercicios N2 v1.3
iii. Un procedimiento para imprimir los resultados completos en forma binómica,
teniendo en cuenta las siguientes consideraciones:
1. No debe aparecer el coeficiente imaginario cuando éste es igual a 1
Ejemplo:
3 + i;
2 – i;
i
2. No debe aparecer el término real cuando éste es igual a cero.
206.
Definir los procedimientos necesarios para:
a) Dar entrada a nueve valores numéricos utilizando un solo procedimiento que ingrese todos
los valores;
b) Realizar un procedimiento que reciba tres argumentos numéricos X, Y, Z almacenando en X
el mayor, en Z el menor y el restante en Y, retornando éstos valores al programa principal.
Luego de definir ambos procedimientos construir el programa principal que permita ingresar nueve
valores numéricos y obtener el mayor y el menor de ellos. Deben utilizarse a tal efecto los
procedimientos definidos en los puntos a y b.
207.
Realizar los cambios necesarios sobre el algoritmo de solución del ejercicio anterior, para procesar 9
palabras, informándose la menor y la mayor, en orden alfabético.
208.
Ingresar tres números Nro1, Nro2, Nro3 y a continuación presentar por pantalla el siguiente menú:
1. Imprimir el promedio de los tres valores
2. Imprimir el mayor
3. Imprimir el menor
4. Imprimir ordenados de mayor a menor
5. Imprimir ordenados de menor a mayor
Digite una opción
Cada opción debe mostrar por pantalla el resultado correspondiente. Si se pulsara una tecla que no
fuera alguna de las propuestas, se debe imprimir el mensaje:
OPCIÓN NO CONTEMPLADA
y se dará por terminada la ejecución del programa.
El programa debe usar selección múltiple, y debe tener en cuenta el criterio de reusabilidad,
aplicando el procedimiento del ejercicio ¡Error! No se encuentra el origen de la referencia. para
ordenar tres números al resolver las opciones 2 a 5.
209.
Una empresa que se dedica a participar en carreras desea un programa que determine cuáles de sus
15 autos son los tres mejor clasificados para competir en una determinada carrera. Para ello se
ingresan por teclado los datos de cada auto: número de coche, nombre del conductor, hora de salida
y hora de llegada en MMSS. Ejemplo: 1 minuto 32 segundos se ingresa como 132. 20 minutos 45
segundos se ingresa como 2045.
210.
Se debe programar un juego que consiste en que un primer jugador selecciona un número entre 1 y
100 y el segundo jugador debe adivinarlo, para lo cual irá ingresando números hasta descubrirlo. Ante
cada intento, el programa debe informar al segundo jugador si el número que ingresó es mayor o
menor que el que debe descubrir. Cuando el segundo jugador acierta el número, el programa debe
mostrar por pantalla el mensaje correspondiente informando además la cantidad de intentos fallidos;
luego, debe dar la opción de finalizar el programa o reiniciar el juego.
Página 4 de 10
Algoritmos y estructuras de datos - Guía de ejercicios N2 v1.3
El programa debe validar los ingresos de datos, emitir los mensajes de error en tal caso, y emitir los
mensajes apropiados para orientar al usuario ante cada situación en la que deba interactuar con el
programa.
211.
Dada la siguiente función:
FUNCTION Suma(Num1, Num2 : INTEGER): INTEGER;
BEGIN
Suma := Num1 + Num2
END;
Desarrollar un programa que implemente la función y efectuar el seguimiento de las variables
indicando qué valores tienen a medida que se ejecuta, para varios juegos de datos.
212.
Desarrollar una función que calcule el factorial de un número, y un programa principal que solicite
números para mostrar su factorial.
213.
Definir una función EsMultiplo(A, B) que retorne TRUE si A es múltiplo de B y FALSE en caso
contrario.
214.
Dado el siguiente programa codificado en PASCAL, escribir el enunciado correspondiente, diagramar
el algoritmo y realizar el seguimiento con diferentes juegos de datos:
PROGRAM EjercicioDeProcedimientoEsMultiploDe;
FUNCTION EsMultiploDe (UnNumero, Numero: LONGINT):BOOLEAN;
BEGIN
WHILE UnNumero > 0 DO
UnNumero := UnNumero - Numero;
EsMultiploDe := (UnNumero = 0);
END;
VAR
UnNumero, PosibleDivisor: LONGINT;
BEGIN
WRITELN ('Ingrese un numero entero');
READLN (PosibleDivisor);
WRITELN('Ingrese un posible Multiplo');
READLN (UnNumero);
IF EsMultiploDe (UnNumero, PosibleDivisor)
THEN
WRITELN ('El numero ', UnNumero, ' es multiplo de ', PosibleDivisor)
ELSE
WRITELN
('El
numero
',
UnNumero,
'
NO
es
multiplo
de
',
PosibleDivisor);
END.
215.
Dado un conjunto de fechas (AAAAMMDD), mostrar por pantalla a qué mes (literal) corresponde cada
una.
216.
Construir un programa en PASCAL tal que, dada una lista de enteros positivos, imprima por pantalla:
Página 5 de 10
Algoritmos y estructuras de datos - Guía de ejercicios N2 v1.3
•
•
•
La cantidad de números pares.
La cantidad de múltiplos de 5.
La cantidad de múltiplos de un número N ingresado por teclado.
217.
Desarrollar un programa PASCAL que permita ingresar tres números Nro1, Nro2 y Nro3 y calcule el
promedio Prom aplicando exclusivamente las funciones Suma(A, B), que retorna el resultado de A +
B, y Cociente(A, B), que retorna el cociente entre A y B.
218.
Dada una lista de pasajeros que se registran para realizar un viaje, y por cada uno de ellos su
Nombre, Destino (Rosario, Córdoba, o San Luis), y KilogramosDeEquipaje, mostrar un mensaje
indicando por cada pasajero el exceso si transporta más de 20 Kg., e informar:
• El porcentaje de pasajeros correspondiente a cada destino.
• Los kilogramos promedio de equipaje por pasajero.
Se debe implementar y aplicar la función Porcentaje(A ,B), que devuelve el porcentaje de A con
respecto a B, y un procedimiento tal que dados A y B imprima el mensaje de exceso de equipaje si A
es mayor que B.
219.
Dado el siguiente programa en PASCAL, determinar su funcionalidad, la de cada módulo, y modificar
los identificadores y mensajes con nombres significativos:
PROGRAM QueHace;
USES CRT;
FUNCTION Corte: CHAR;
VAR Car: CHAR;
BEGIN
REPEAT
WRITE ( ' ¿Desea probar nuevamente? (s/n): ' );
Car:= UPCASE (READKEY)
UNTIL ((Car = 'S') OR (Car = 'N'));
Corte := Car
END;
PROCEDURE ProcX (VAR PDato1, PDato2: BYTE; VAR PDato3: WORD);
BEGIN
WRITE ( ' Ingrese xxxx: ' );
READLN ( PDato1 );
WRITE ( ' Ingrese xxxx: ' );
READLN ( PDato2 );
WRITE ( ' Ingrese xxxx: ' );
READLN ( PDato3 )
END;
FUNCTION FuncX1 (PDato3: WORD): BOOLEAN;
BEGIN
FuncX1 := (PDato3 MOD 4 = 0) AND
NOT ((PDato3 MOD 100 = 0) AND (PDato3 MOD 400 = 0));
END;
FUNCTION FuncX2 (PDato3:WORD): WORD;
BEGIN
IF FuncX1 (PDato3) THEN
FuncX2 := 29
ELSE
FuncX2 := 28;
END;
Página 6 de 10
Algoritmos y estructuras de datos - Guía de ejercicios N2 v1.3
FUNCTION FuncX3 (PDato1, PDato2: BYTE; PDato3: WORD): BOOLEAN;
VAR Tope: BYTE;
BEGIN
Tope := 0;
CASE PDato2 OF
1, 3, 5, 7, 8, 10, 12: Tope:= 31;
4, 6, 9, 11: Tope:= 30;
2: Tope:= FuncX2(PDato3)
END;
FuncX3:= (Tope > 0) AND (PDato1 <= Tope) AND (PDato1 > 0) AND (PDato2 >
0)
END;
VAR
Dato1, Dato2: BYTE;
Dato3: WORD;
BEGIN
CLRSCR;
REPEAT
ProcX (Dato1, Dato2, Dato3);
IF FuncX3 (Dato1, Dato2, Dato3)
THEN
WRITELN ( ' Ingreso correcto de xxxxxxxx ' )
ELSE
WRITELN ( ' El ingreso de xxxxxx NO es correcto ' );
UNTIL (Corte = 'N');
WRITELN ('Presione ENTER para salir');
READLN
END.
220.
Definir una función que calcule la diferencia en días entre dos fechas válidas. Asumiendo que los
meses tiene exactamente 30 días y que los años tienen exactamente 360 días.
221.
Definir una función que califique a un alumno con S (Sobresaliente = 10), D (Distinguido = 8 o 9), B
(Bueno = 7 o 6), R (Regular = 0 a 5), a partir de su nota dada como parámetro. La función debe
recibir un valor entero como parámetro y devolver un valor de tipo CHAR.
222.
Definir una función que devuelva la primera palabra en orden alfabético, a partir de tres palabras
dadas como parámetros.
223.
Ante una jugada de PRODE se procesan los datos correspondientes a los 13 partidos. De cada uno
de ellos se conoce el NumeroDePartido, el TotalDeGolesLocal y el TotalDeGolesVisitante
Diseñar el algoritmo y el programa en PASCAL que:
• Al finalizar de ingresar los datos de un partido imprima “Ganador LOCAL”, “Ganador
VISITANTE”, o “Ganador EMPATE”, según corresponda
• Y Al finalizar de ingresar todos los partidos imprima el porcentaje de Ganador LOCAL,
Ganador VISITANTE y Ganador EMPATE.
224.
Dado un conjunto de valores enteros, calcular e imprimir:
• Cuántos valores cero hubo.
• El promedio de los valores positivos.
• La sumatoria de los valores negativos.
Página 7 de 10
Algoritmos y estructuras de datos - Guía de ejercicios N2 v1.3
225.
Diseñar los 5 algoritmos y los 5 programas en PASCAL que procesen cada uno de los siguientes
lotes de datos:
1. 167 valores enteros.
2. N valores.
3. Un conjunto de valores que termina con un valor igual al último leído.
4. N valores, pero se debe finalizar el ingreso al llegar al cuarto cero ingresado.
5. N valores, pero también deberá finalizar si se cumple alguna de las condiciones indicadas en
2, 3, ó 4, o si el promedio de los valores positivos es mayor que 6.
226.
Dada una serie de M pares (color ‘R’ / ‘N’, número) correspondientes a los tiros de una ruleta,
informar:
• Cuántas veces salió el cero.
• Cuántas veces seguidas llegó a repetirse el color negro.
• El máximo de repeticiones consecutivas de un número, y dicho número.
• El número anterior al último cero.
• El mayor número de veces seguidas que tras el rojo salió negro.
• El mayor número de veces seguidas que no se dio la segunda docena.
227.
El gobierno de la Ciudad de Buenos Aires realiza una encuesta en casas de familia. De cada familia
encuestada se conoce: domicilio, tipo de vivienda (‘C’: casa, ‘D’: departamento) y cantidad de
integrantes.
De cada integrante de la familia se conoce: nombre y apellido, edad, sexo (‘F’, ‘M’), nivel de estudios
alcanzados (‘N’: no posee, ‘P’: primario, ‘S’: secundario, ‘U’: universitario), y un indicador (‘I’:
Incompleto, ‘C’: Completo) referente al ítem anterior.
Se identifica el fin de ingreso de datos con un cero como cantidad de integrantes.
Informar:
• La cantidad de encuestados que han completado los estudios primarios.
• El porcentaje de analfabetismo en la ciudad (se consideran analfabetos a los mayores de 10
años que no poseen estudios).
• El domicilio de la familia con mayor cantidad de integrantes que viven en un departamento.
• La edad promedio de todos los habitantes de la ciudad.
• La mayor edad promedio de las familias.
• La cantidad de encuestados con estudios secundarios incompletos.
• El porcentaje de encuestados de sexo femenino con estudios terciarios completos.
228.
Una compañía aérea solicita un programa que imprima información sobre los N vuelos realizados en
el mes. Para ello cuenta con la siguiente información de cada vuelo realizado: número, destino, y
cantidad de asientos. Y de cada pasajero: número de pasaporte e importe abonado por el pasaje. La
información de cada vuelo finaliza con número de pasaporte igual a 0.
El programa debe:
• Emitir el siguiente listado
Número de Vuelo: 999 Destino: XXXXXX
Número de Pasaporte
Importe $
XXXXXXXXXXX
99999999
XXXXXXXXXXX
99999999
XXXXXXXXXXX
99999999
Total recaudado: XXXXXXXXXX
% Asientos libres: XXXXXXXXXX
% Asientos ocupados: XXXXXXXXX
•
Informar:
o El total recaudado por la compañía en el mes.
o La mayor cantidad de veces seguidas que se despacharon vuelos completos.
Página 8 de 10
Algoritmos y estructuras de datos - Guía de ejercicios N2 v1.3
o
El número de vuelo con mayor recaudación.
229.
Una bodega quiere lanzar una oferta para terminar con el stock de B cajas de vino blanco y T cajas
de vino tinto. Desea armar la mayor cantidad posible de ofertas, de tal manera que todas tengan la
misma cantidad de cajas de vino blanco y también de vino tinto. Informar cuántas ofertas podrá armar
como máximo, así como la cantidad de cajas de vino blanco y la cantidad de cajas de vino tinto que
tendrá cada oferta.
El programa debe aplicar una función tal que dados dos valores enteros positivos X e Y, devuelva el
máximo común divisor.
Efectuar el seguimiento del programa para los siguientes datos:
• B = 48 T = 64
• B = 42 T = 63
Página 9 de 10
Algoritmos y estructuras de datos - Guía de ejercicios N2 v1.3
Referencias
La presente guía se compone de ejercitación cuya autoría corresponde a:
• Material extraído de documentos generados por Proyecto de Investigación COVIE-FRBAUTN
• Marcelo González
• Ariel Glikman
Página 10 de 10
Descargar