Professional Documents
Culture Documents
Ejercicio 01.
Diseñe un programa que permita guardar los datos de una encuesta que se realizará a 300 personas
sobre su índice de masa corporal. A los encuestados se les pedirá su nombre, cédula, estatura y
peso, para luego calcular su IMC y clasificarlo. El programa debe estructurarse utilizando
programación procedimental, debe contar con las siguientes subrutinas:
1) Ingresar de los datos de la Encuesta: Permite ingresar los datos obtenidos de un encuestado,
luego preguntar si se desea ingresar los datos de otra persona o si desea regresar al menú principal.
2) Mostrar Datos Ingresados: Se debe visualizar la estructura con toda la información completa.
3) Calcular el Promedio de los IMC: Devolverá el cálculo del promedio de los IMC‟s de los
encuestados.
4) Buscar los datos de un encuestado según su cédula.
5) Salir del Programa.
Datos_IMC
Nombre [25] Cedula Estatura Peso IMC Eval
Encuesta [300]
Nombre [25] Cedula Estatura Peso IMC Eval
L 1
2
…
300
Clasificación IMC
Infrapeso <18,50
Normal 18,50 a 24,99
Sobrepeso ≥25,00
Obeso ≥30,00
Resolución.
Entero N=300
2
// Procedimiento Validar
Procedimiento Validar (Entero &valor, Entero lim_inf, Entero lim_sup)
Inicio
Repetir Mientras (valor<lim_inf || valor>lim_sup)
Mostrar (“Ha seleccionado una opción incorrecta, reintrodúzcala:”)
Leer (valor)
Fin_Repetir_Mientras
Fin
// Función Menu
Entero Menu ()
Inicio
Entero opc
Mostrar (“Menú de Opciones”)
Mostrar (“1) Ingresar datos de Encuestado”)
Mostrar (“2) Visualizar datos de la Encuesta”)
Mostrar (“3) Ver Promedio de IMC‟s”)
Mostrar (“4) Buscar los datos de un encuestado”)
Mostrar (“5) Salir del Sistema”)
Mostrar (“Seleccione una opción:”)
Leer (opc)
Llamar a: Validar (opc, 1, 5)
Devolver (opc)
Fin
Reg[L].Eval = “Sobrepeso”
Fin_Si
Si (Reg[L].IMC >= 30)
Reg[L].Eval = “Obeso”
Fin_Si
Mostrar (“Desea ingresar los datos de otro encuestado, s: si o n: regresar al menú principal”)
Leer (Resp)
Fin_Repetir_Mientras
Fin
// Subrutina Mostrar
Procedimiento Mostrar (Datos_IMC Reg[ ], Entero n)
Inicio
Entero i
Si (n>0)
Mostrar (“Encuesta Índice de Masa Corporal”)
Mostrar (“Nombre Cédula Estatura Peso IMC Eval”)
Repetir Desde i=1 hasta i<=n
Mostar (Reg[i].Nombre, “ ”, Reg[i].Cedula, “ ”, Reg[i].Estatura)
Mostrar (“ ”, Reg[i].Peso, “ ”, Reg[i].IMC, “ ”)
Mostrar (Reg [i].Eval, “ ”)
Fin_Repetir_Desde
Sino
Mostrar (“No ha ingresado datos…”)
Fin_Si
Fin
// Subrutina de Búsqueda
Entero Búsqueda (Datos_IMC Reg[ ], Entero n, Entero Ced_B)
Inicio
Entero i
Repetir desde i=1 hasta i<=n
Si (Reg[i].Cedula == Ced_B)
4
Devolver (i)
Fin_si
Fin_Repetir_Desde
Devolver (0)
Fin
// Programa Principal
Inicio
En Caso de (opc)
Caso 1:
Llamar a: Ing_FxF (Encuesta, L)
Caso 2:
Llamar a: Mostrar (Encuesta, L)
Caso 3:
Mostrar (“El promedio del IMC de los encuestados es”, Promedio (Encuesta,L))
Caso 4:
Mostrar (“Indique el número de cédula a buscar: ”)
Leer (Cedula_B)
pos = Busqueda (Encuesta, L, Cedula_B)
Si (pos > 0)
Mostrar (“Nombre Cédula Estatura Peso IMC Eval”)
Mostrar (Encuesta[pos].Nombre, “ ”, Encuesta[pos].Cedula, “ ”, Encuesta[pos].Estatura)
Mostrar (“ ”, Encuesta[pos].Peso, “ ”, Encuesta[pos].IMC, “ ”)
Mostrar (Encuesta[pos].Eval, “ ”)
Sino
Mostrar(“Cédula Inexistente”)
Fin_Si
Caso 5:
Mostrar (“Fin del Programa”)
Fin_En_Caso_De
Fin_Repetir_Mientras
Fin
5
Ejercicio 02.
El departamento de bienestar y salud de una empresa está organizando una jornada de pérdida de
peso para sus empleados, por lo que se necesita un algoritmo que permita registrar los datos de los
30 empleados participantes junto con su peso a lo largo de las 10 semanas que duró la jornada y
además calcular pérdida de peso total que alcanzó el empleado. Se utilizará una estructura como la
que se muestra a continuación:
Jornada[30]
Peso[10]
Nombre Cedula Edad Perdido
1 2 3 4 5 6 7 8 9 10
1 Luis Perez 15768883 36 95 93,5 90 91 89,5 88 86,5 86 85 84 11
2
…
29
30
// Procedimiento Validar
Procedimiento Validar (Entero &valor, Entero lim_inf, Entero lim_sup)
Inicio
Repetir Mientras (valor<lim_inf || valor>lim_sup)
Mostrar (“Ha seleccionado una opción incorrecta, reintrodúzcala:”)
6
Leer (valor)
Fin_Repetir_Mientras
Fin
// Función Menu
Entero Menu ()
Inicio
Entero opc
Mostrar (“Menú de Opciones”)
Mostrar (“1) Ingresar Datos de Participantes”)
Mostrar (“2) Mostrar Resultados de Jornada”)
Mostrar (“3) Ver Ganador de la Jornada”)
Mostrar (“4) Salir del Sistema”)
Mostrar (“Seleccione una opción:”)
Leer (opc)
Llamar a: Validar (opc, 1, 4)
Devolver (opc)
Fin
// Procedimiento Ingreso
Procedimiento Ingreso (Datos_Jornada Reg[ ], Entero n)
Inicio
Entero i, j
Repetir desde i=1 hasta i<=n
Mostar (“Ingrese los datos del Encuestado: ”)
Mostar (“Nombre, Cedula y Edad: ”)
Leer (Reg[i].Nombre, Reg[i].Cedula, Reg[i].Edad)
Repetir desde j=1 hasta j<=10
Mostrar (“Peso semana ”, j)
Leer (Reg[i].Peso[j])
Fin_Repetir_Desde
Reg[i].Perdido = Reg[i].Peso[1] - Reg[i].Peso[10]
Fin_Repetir_Desde
Fin
// Subrutina Mostrar
Procedimiento Mostrar (Datos_Jornada Reg[ ], Entero n)
Inicio
Entero i, j
Mostrar (“Resultados Jornada de Bienestar”)
Mostrar (“Nombre Cédula Edad Peso por Semanas Total Perdido”)
Repetir Desde i=1 hasta i<=n
Mostar (Reg[i].Nombre, “ ”, Reg[i].Cedula, “ ”, Reg[i].Edad, “ ”)
Repetir Desde j=1 hasta j<=10
Mostrar (Reg[i].Peso[j], “ ”)
Fin_Repetir_Desde
Mostrar (Reg[i].Perdido, “ ”)
Fin_Repetir_Desde
Fin
7
// Subrutina Ganador
Entero Ganador (Datos_Jornada Reg[ ], Entero n)
Inicio
Entero i, pos = 1
Real Mayor = Reg[1].Perdido // Aplicando algoritmo “Mayor” asumimos que el primero es el mayor
Repetir desde i=2 hasta i<=n
Si (Reg[i].Perdido > Mayor)
Mayor = Reg[i].Perdido
pos = i
Fin_Si
Fin_Repetir_Desde
Devolver (pos)
Fin
En Caso de (opc)
Caso 1:
Llamar a: Ingreso (Jornada, 30)
Caso 2:
Llamar a: Mostrar (Jornada, 30)
Caso 3:
pos = Ganador (Jornada, 30)
Caso 4:
Mostrar (“Fin del Programa”)
Fin_En_Caso_De
Fin_Repetir_Mientras
Fin
8
Ejercicio 03.
Su mejor amig@ se va a casar, por lo que le pide el favor de desarrollar un programa que permita
automatizar el manejo de los invitados en las distintas mesas, los datos se encuentran almacenados
en una estructura como la que se muestra a continuación:
Invitados [200]
Nombre Cedula Mesa Estado
1 Ivan Montero 21000000 1 A A: Ausente
2 Fernanda Gonzalez 10000000 2 P P: Presente
… Juan Lopez 14000000 5 P
300 Luisa Castro 18000000 10 A
Usted debe asumir que los datos de los invitados ya se encuentran cargados en sistema y
debe implementar el código a través de programación procedimental utilizando las siguientes
subrutinas:
a) Menú: Despliega el menú de opciones con la opción seleccionada por el usuario previamente
validada.
b) Ya_llego: esta subrutina permitirá cambiar el estado del invitado a presente (P) buscándolo
por su número de cédula.
c) Lista_Presentes: Mostrará el listado de invitados que se han hecho presentes en el evento.
d) Buscar: Buscará un invitado por su cédula de identidad y retornará el número de mesa que
éste posea asignado, en caso de que la cédula no se consiga debe retornar un cero.
// Procedimiento Validar
Procedimiento Validar (Entero &valor, Entero lim_inf, Entero lim_sup)
Inicio
Repetir Mientras (valor<lim_inf || valor>lim_sup)
Mostrar (“Ha seleccionado una opción incorrecta, reintrodúzcala:”)
Leer (valor)
Fin_Repetir_Mientras
Fin
9
// Función Menu
Entero Menu ()
Inicio
Entero opc
Mostrar (“Menú de Opciones”)
Mostrar (“1) Invitado confirmado en Boda”)
Mostrar (“2) Mostrar Invitados Presentes”)
Mostrar (“3) Buscar la Mesa del Invitado”)
Mostrar (“4) Salir del Sistema”)
Mostrar (“Seleccione una opción:”)
Leer (opc)
Llamar a: Validar (opc, 1, 4)
Devolver (opc)
Fin
// Subrutina Ya llego
Entero Ya_llegó (Datos_Boda Reg[ ], Entero n)
Inicio
Entero i, Ced_Bus
Mostrar (“Indique la cédula del invitado que ha llegado: ”)
Leer (Ced_Bus)
Repetir desde i=1 hasta i<=n
Si (Reg[i].Cedula == Ced_B)
Reg[i].Estado = „P‟
Devolver (1)
Fin_si
Fin_Repetir_Desde
Devolver (0)
Fin
// Subrutina Mostrar
Procedimiento Mostrar_Presentes (Datos_Boda Reg[ ], Entero n)
Inicio
Entero i
Mostrar (“Invitados que se han hecho presentes”)
Mostrar (“Nombre Cédula Mesa”)
Repetir Desde i=1 hasta i<=n
Si (Reg[i].Estado == ‘P’)
Mostar (Reg[i].Nombre, “ ”, Reg[i].Cedula, “ ”, Reg[i].Mesa, “ ”)
Fin_Si
Fin_Repetir_Desde
Fin
// Subrutina de Búsqueda
Entero Búsqueda (Datos_Boda Reg[ ], Entero n, Entero Ced_B)
Inicio
Entero i
Repetir desde i=1 hasta i<=n
Si (Reg[i].Cedula == Ced_B)
Devolver (Reg[i].Mesa)
10
Fin_si
Fin_Repetir_Desde
Devolver (0)
Fin
En Caso de (opc)
Caso 1:
Si( Ya_llego (Invitados, 200) == 1 ) // Uso de valor retornado como condición
Mostrar (“Estado Cambiado Correctamente”)
Sino
Mostrar (“No se pudo actualizar estado, intente nuevamente”)
Fin_Si
Caso 2:
Llamar a: Mostrar_Presentes (Invitados, 200)
Caso 3:
Mostrar(“ Indique la cédula del invitado a buscar: ”)
Leer (CedulaB)
Si (Mesa>0)
Mostrar (“El invitado tiene asignada la mesa ”, Mesa)
Sino
Mostrar(“No se ha encontrado al invitado, vuelva a buscar…”)
Fin_Si
Caso 4:
Mostrar (“Fin del Programa”)
Fin_En_Caso_De
Fin_Repetir_Mientras
Fin
11
Ejercicio 04.
Diseñe un algoritmo que permita ingresar los valores de un arreglo unidimensional y llene un
segundo arreglo con los elementos del primero pero de forma invertida.
Arr1[X] 1 3 5 6 8 2 4
Arr2[X] 4 2 8 6 5 3 1
// Subrutina Muestra
Procedimiento Muestra (Entero Arr[ ], Entero n)
Inicio
Entero i
Repetir desde i = 1 hasta i<=n
Mostrar (“Elemento”, i, “=”, Arr[i])
Fin_Repetir_Desde
Fin
// Subrutina Invertir
Procedimiento Invertir (Entero Arr1[ ], Entero Arr2[ ], Entero n)
Inicio
Entero i
Repetir desde i=1 hasta i<=n
Arr2[i] = Arr1[n+1-i]
Fin_Repetir_Desde
Fin
Fin