Está en la página 1de 16

Ejercicio 01.

Disee una subrutina que permita efectuar conversiones de temperatura en las escalas de
Kelvin, Grados Centgrados y Fahrehneit. La subrutina debe recibir la opcin de conversin
deseada (Opcin 1: C a F, Opcin 2: F a C, Opcin 3: C a K,) y el valor a convertir.
Las relaciones para la conversin son:
(

) (
Valor

)
Conversin

Validar

Temp1
Temp2

Lim_inf

Opcion
Lim_sup

Algoritmo Conversin de Temperatura


// Subrutina Validar
Procedimiento Validar (Entero &Valor, Entero Lim_inf, Entero Lim_Sup)
Inicio
Repetir Mientras (Valor<Lim_inf || Valor>Lim_sup)
Mostrar (Valor fuera de rango, reintroduzca)
Leer (Valor)
F_R_M
Fin
// Subrutina Conversin
Real Conversin (Real Temp1, Entero Opcion)
Inicio
Real Temp2
En caso de (Opcion)
Caso 1:
Temp2 = (9/5)*Temp1 + 32 // Grados Centgrados a Fahrehneit
Caso 2:
Temp2 = (5/9)*(Temp1 - 32) // Grados Fahrehneit a Centgrados
Caso 3:
Temp2 = Temp1 + 273 // Grados Centgrados a Kelvin
Caso 4:
Temp2 = Temp1 - 273 // Kelvin a Grados Centgrados
Caso 5:
Temp2 = ((5/9)*(Temp1 - 32)) + 273 // Grados Fahrehneit a Kelvin
Caso 6:
Temp2 = (9/5)*(Temp1 - 273) + 32 // Kelvin a Grados Fahrehneit
Fin_En_Caso_De
Devolver (Temp2)
Fin
1

//PROGRAMA PRINCIPAL
Inicio
Real Temperatura1, Temperatura2
Entero Opc
Mostrar (Ingrese el valor de la Temperatura en la unidad deseada)
Leer (Temperatura1)
Mostrar (Ingrese el tipo de conversin que desea Realizar)
Mostrar (1) Grados Centgrados a Fahrehneit 2) Grados Fahrehneit a Centgrados)
Mostrar (3) Grados Centgrados a Kelvin 4) Kelvin a Grados Centgrados)
Mostrar (5) Grados Fahrehneit a Kelvin 6) Kelvin a Grados Fahrehneit)
Leer (Opc)
Llamar a: Validar (Opc, 1, 6)
Temperatura2 = Conversion (Temperatura1, Opc)
Mostrar (El equivalente es , Temperatura2)
Fin
Ejercicio 02.
Disee un algoritmo que permita ingresar los valores de dos arreglos unidimensionales y
llene un tercer arreglo con la suma, resta, multiplicacin o divisin de los dos primeros segn
una opcin que seleccionada por el usuario.
A[X]

B[X]

Operacion

S
+

R
-

M
*

D
/

13

12

10

C[X]

El algoritmo debe implementarse a travs de tres subrutinas:


1) Cargar: permite ingresar los valores de un arreglo unidimensional de N celdas.
2) Calcular: debe recibir el conjunto de arreglos y su dimensin, as como el parmetro
opcin que definir la operacin (S, R, M, D) que se realizar entre los dos primeros
arreglos para llenar el tercero.
3) Muestra: permite imprimir los valores del arreglo resultante de N celdas.
Muestra

Cargar
Arr[ ]

Arr[ ]

Calcular
Arr1[ ]
Arr2[ ]
Arr3[ ]
n
Operacion

Algoritmo Operaciones con Arreglos


// Subrutina Cargar
Procedimiento Cargar (Entero Arr[ ], Entero n)
Inicio
2

Entero i
Repetir desde i = 1 hasta i<=n
Mostrar (Ingrese el valor del elemento , i)
Leer (Arr[i])
Fin_Repetir_Desde
Fin
// 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 Calcular
Procedimiento Calcular (Entero Arr1[ ], Entero Arr2[ ], Entero Arr3[ ], Entero n,
Caracter Operacion)
Inicio
Entero i
Repetir desde i=1 hasta i<=n
En caso de (Operacin)
Caso S:
Arr3[i] = Arr1[i] + Arr2[i]
Caso R:
Arr3[i] = Arr1[i] - Arr2[i]
Caso M:
Arr3[i] = Arr1[i] * Arr2[i]
Caso D:
Si (Arr2[i] != 0)
Arr3[i] = Arr1[i] + Arr2[i]
Sino
Arr3[i] = 0
Fin_si
Fin_en_Caso_De
Fin_Repetir_Desde
Fin
//------------------ Programa Principal --------------------//
Inicio
Entero A[20], B[20], C[20]
Caracter Opcion
Llamar a: Cargar (A, 20)
Llamar a: Cargar (B, 20)
Mostrar (Seleccione que operacin desea hacer con los arreglos: )
Mostrar (S) Suma R) Resta M) Multiplicacin D) Divisin)
Leer (Opcion)
Llamar a: Calcular(A, B, C, 20, Opcion)
3

Mostrar (El arreglo resultante es)


Llamar a: Muestra (C, 15)
Fin
Ejercicio 03.
Disee un algoritmo que permita ingresar los valores de un arreglo unidimensional y
posteriormente calcule el promedio de los valores de dicho arreglo.
A[X]

El algoritmo debe implementarse a travs de dos subrutinas:


1) Cargar: permite ingresar los valores de un arreglo unidimensional de N celdas.
2) Promedio: debe recibir el arreglo y calcular el promedio de los elementos que este
contenga.
Cargar

Promedio

Arr[ ]

Arr[ ]

Prom

Algoritmo Promedio
// Subrutina Cargar
Procedimiento Cargar (Entero Arr[ ], Entero n)
Inicio
Entero i
Repetir desde i = 1 hasta i<=n
Mostrar (Ingrese el valor del elemento , i)
Leer (Arr[i])
Fin_Repetir_Desde
Fin
// Funcin Promedio
Real Promedio (Entero Arr[ ], Entero n)
Inicio
Entero i
Real Prom = 0
Repetir desde i = 1 hasta i<=n
Prom += Arr[i]
Fin_Repetir_Desde
Devolver (Prom/n)
Fin
//------------------ Programa Principal --------------------//
Inicio
Real A[15], Prom
Llamar a: Cargar (A, 15)
Mostrar (El Promedio es , Promedio (A,15))
Fin
4

Ejercicio 04.
Disee 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[N]

Arr2[N]

El algoritmo debe implementarse a travs de tres subrutinas:


1) Cargar: permite ingresar los valores de un arreglo unidimensional de N celdas.
2) Invertir: toma los elementos de un primer arreglo y los carga en orden invertido en un
segundo arreglo.
3) Muestra: permite imprimir los valores del arreglo resultante de N celdas.
// ---------------- Resolucin --------------- //
// Subrutina Cargar
Procedimiento Cargar (Entero Arr[ ], Entero n)
Inicio
Entero i
Repetir desde i = 1 hasta i<=n
Mostrar (Ingrese el valor del elemento , i)
Leer (Arr[i])
Fin_Repetir_Desde
Fin
// 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
//------------------ Programa Principal --------------------//
Inicio
Entero A[15], B[15]
5

Llamar a: Cargar (A, 15)


Llamar a: Invertir (A, B, 15)
Mostrar (El arreglo original es)
Llamar a: Muestra (A, 15)
Mostrar (El arreglo invertido es)
Llamar a: Muestra (B, 15)
Fin
Ejercicio 05.
Disee 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,
cdula, estatura y peso, para luego calcular su IMC y clasificarlo. El programa debe
estructurarse utilizando programacin 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 informacin
completa.
3) Calcular el Promedio de los IMC: Devolver el clculo del promedio de los IMCs de los
encuestados.
4) Buscar los datos de un encuestado segn su cdula.
5) Salir del Programa.
Clasificacin IMC
Para calcular el ndice de masa corporal se
Infrapeso < 18,50
utiliza la frmula:
18,50 Normal < 25
IMC = Peso / Estatura2
Sobrepeso 25,00
Obeso 30,00

Nombre [25]

Cedula

Nombre [25]
L

Datos_IMC
Estatura
Peso

Cedula

Encuesta [300]
Estatura
Peso

IMC

IMC

Eval

Eval

1
2

300

Algoritmo Encuesta IMC


//Definicin de la Estructura (Formato) del Registro
6

Registro Datos_IMC
Entero
Cedula
Real
Peso, Estatura, IMC
Caracter
Nombre[25], Eval[10]
Fin_Registro
Entero N=300 // En C++ #define N 300
// 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 opcin incorrecta, reintrodzcala:)
Leer (valor)
Fin_Repetir_Mientras
Fin
// Funcin 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 IMCs)
Mostrar (4) Buscar los datos de un encuestado)
Mostrar (5) Salir del Sistema)
Mostrar (Seleccione una opcin:)
Leer (opc)
Llamar a: Validar (opc, 1, 5)
Devolver (opc)
Fin
// Procedimiento Ingreso Fila por Fila
Procedimiento Ing_FxF (Datos_IMC Reg[ ], Entero &L)
Inicio
Caracter Resp=s
Repetir Mientras (Resp==s && L<N)
L=L+1
Mostar (Ingrese los datos del Encuestado: )
Mostar (Nombre: )
Leer (Reg[L].Nombre)
Mostrar (Cdula: )
Leer (Reg[L].Cedula)
Mostrar (Estatura: )
Leer (Reg[L].Estatura)
Mostrar (Masa Corporal: )
Leer (Reg[L].Peso)
7

Reg[L].IMC = Reg[L].Peso / Reg[L].Estatura^2


Si (Reg[L].IMC < 18,5)
Reg[L].Eval = Infrapeso
Fin_Si
Si (Reg[L].IMC >= 18,5 && Reg[L].IMC < 25)
Reg[L].Eval = Normal
Fin_Si
Si (Reg[L].IMC >= 25 && Reg[L].IMC < 30)
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
Cdula
Estatura
Peso
Repetir Desde i=1 hasta i<=n
Mostar (Reg[i].Nombre,
, Reg[i].Cedula,
Mostrar ( , Reg[i].Peso, , Reg[i].IMC,
Mostrar (Reg [i].Eval, )
Fin_Repetir_Desde
Sino
Mostrar (No ha ingresado datos)
Fin_Si
Fin

IMC

Eval)

, Reg[i].Estatura)
)

// Subrutina Calculo de Promedio de IMCs


Real Promedio (Datos_IMC Reg[ ], Entero n)
Inicio
Entero i
Real Prom = 0
Si (n>0)
Repetir desde i=1 hasta i<=n
Prom = Prom + Reg[i].IMC
Fin_Repetir_Desde
Devolver (Prom/n)
Sino
Mostrar (No ha ingresado datos)
8

Devolver (0)
Fin_Si
Fin
// Subrutina de Bsqueda
Entero Bsqueda (Datos_IMC Reg[ ], Entero n, Entero Ced_B)
Inicio
Entero i
Repetir desde i=1 hasta i<=n
Si (Reg[i].Cedula == Ced_B)
Devolver (i)
Fin_si
Fin_Repetir_Desde
Devolver (0)
Fin
// Programa Principal
Inicio
//Declaracin del Arreglo de Registro
Datos_IMC Encuesta[N]
//Declaracin de las otras Variables
Entero opc=1, Cedula_B, pos, L=0
// Ciclo para repetir el Programa
Repetir Mientras (opc>=1 && opc<5)
opc=menu() // Llamada a la funcin men
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 nmero de cdula a buscar: )
Leer (Cedula_B)
pos = Busqueda (Encuesta, L, Cedula_B)
Si (pos > 0)
Mostrar (Nombre
Cdula
Estatura
Peso
IMC
Eval)
Mostrar (Encuesta[pos].Nombre,
, Encuesta[pos].Cedula,
,
Encuesta[pos].Estatura)
Mostrar ( , Encuesta[pos].Peso, , Encuesta[pos].IMC,
)
9

Mostrar (Encuesta[pos].Eval, )
Sino
Mostrar(Cdula Inexistente)
Fin_Si
Caso 5:
Mostrar (Fin del Programa)
Fin_En_Caso_De
Fin_Repetir_Mientras
Fin
Ejercicio 06.
El departamento de bienestar y salud de una empresa est organizando una jornada de
prdida 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 adems calcular prdida de peso total que alcanz el
empleado. Se utilizar una estructura como la que se muestra a continuacin:
Jornada[30]

1
2

29
30

Nombre

Cedula

Edad

Luis Perez

15768883

36

Peso[10]
4
5
6
7

95

93,5

90

91

89,5

88

86,5

10

86

85

84

Perdido
11

El programa contar con el siguiente men de opciones:


1)
2)
3)
4)

Ingresar los datos de los participantes.


Mostrar los resultados obtenidos.
Determinar el empleado con mayor prdida en la jornada.
Salir del Programa.

El cdigo se estructurar mediante programacin procedimental, usted debe desarrollar e


implementar las siguientes subrutinas:
1) Subrutina Menu: se encargar de desplegar el men de opciones del programa y retornar
la opcin seleccionada por el usuario validada (usar la subrutina validacin).
2) Subrutina Ingreso: permitir el ingreso los datos de todos los empleados participantes
(nombre, cedula y edad), sus registros de peso de las 10 semanas y se calcular el peso
total perdido por la persona (perdido).
3) Subrutina Ganador: determinar quien perdi ms peso durante la jornada y retornando
la fila del registro en que est registrado.
Algoritmo Jornada de Salud
// Definicin de la estructura del registro
10

Registro Datos_Jornada
Caracter Nombre[25]
Entero Cedula, Edad
Real Peso[10], Perdido
Fin_Registro
// 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 opcin incorrecta, reintrodzcala:)
Leer (valor)
Fin_Repetir_Mientras
Fin
// Funcin 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 opcin:)
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
11

Entero i, j
Mostrar (Resultados Jornada de Bienestar)
Mostrar (Nombre
Cdula
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
// 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
//---------------- Programa Principal -----------------------//
Inicio
//Declaracin del Arreglo de Registro
Datos_Jornada
Jornada[30]
//Declaracin de las otras Variables
Entero opc=1, pos
// Ciclo para repetir el Programa
Repetir Mientras (opc>=1 && opc<4)
opc=menu() // Llamada a la funcin men
En Caso de (opc)
Caso 1:
Llamar a: Ingreso (Jornada, 30)
Caso 2:
Llamar a: Mostrar (Jornada, 30)
Caso 3:
12

pos = Ganador (Jornada, 30)


Mostrar (El ganador de la jornada es: , Jornada[pos].Nombre)
Mostrar (con , Jornada[pos].Perdido, Kilos perdidos)
Caso 4:
Mostrar (Fin del Programa)
Fin_En_Caso_De
Fin_Repetir_Mientras
Fin
Ejercicio 07.
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 continuacin:
Invitados [200]
Nombre
Cedula Mesa Estado
1
Ivan Montero
21000000
1
A
2 Fernanda Gonzalez 10000000
2
P

Juan Lopez
14000000
5
P
300
Luisa Castro
18000000
10
A

A: Ausente
P: Presente

El programa contar con un men de opciones como el siguiente:


1)
2)
3)
4)

Cambiar Estado de Invitado a Presente.


Mostrar Lista de Invitados Presentes.
Ver nmero de Mesa del Invitado buscndolo por su Nmero de Cdula.
Salir del Programa.

Usted debe asumir que los datos de los invitados ya se encuentran cargados en
sistema y debe implementar el cdigo a travs de programacin procedimental utilizando las
siguientes subrutinas:
a) Men: Despliega el men de opciones con la opcin seleccionada por el usuario
previamente validada.
b) Ya_llego: esta subrutina permitir cambiar el estado del invitado a presente (P)
buscndolo por su nmero de cdula.
c) Lista_Presentes: Mostrar el listado de invitados que se han hecho presentes en el
evento.
d) Buscar: Buscar un invitado por su cdula de identidad y retornar el nmero de
mesa que ste posea asignado, en caso de que la cdula no se consiga debe retornar
un cero.
Algoritmo Boda
// Definicin de la estructura del registro
Registro Datos_Boda
Caracter Nombre[25], Estado
13

Entero Cedula, Mesa


Fin_Registro
// 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 opcin incorrecta, reintrodzcala:)
Leer (valor)
Fin_Repetir_Mientras
Fin
// Funcin 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 opcin:)
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 cdula 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
Cdula
Mesa)
Repetir Desde i=1 hasta i<=n
Si (Reg[i].Estado == P)
14

Mostar (Reg[i].Nombre,
Fin_Si
Fin_Repetir_Desde

, Reg[i].Cedula,

, Reg[i].Mesa,

Fin
// Subrutina de Bsqueda
Entero Bsqueda (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)
Fin_si
Fin_Repetir_Desde
Devolver (0)
Fin
//---------------- Programa Principal -----------------------//
Inicio
//Declaracin del Arreglo de Registro
Datos_Boda
Invitados[200]
//Declaracin de las otras Variables
Entero opc=1, Mesa, CedulaB
// Ciclo para repetir el Programa
Repetir Mientras (opc>=1 && opc<4)
opc=menu() // Llamada a la funcin men
En Caso de (opc)
Caso 1:
Si( Ya_llego (Invitados, 200) == 1 ) // Uso de valor retornado como condicin
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 cdula del invitado a buscar: )
Leer (CedulaB)
Mesa = Busqueda (Invitados, 200, CedulaB)
Si (Mesa>0)
15

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

16

También podría gustarte