Está en la página 1de 13

PRINCIPIOS DE

ALGORITMOS

ALGORITMOS
estructuras repetitivas Mientras y Repetir

EJERCICIOS

Escriba Las fórmulas que usará para resolver las siguientes preguntas, identifique
los datos necesarios y escriba el algoritmo correspondiente.

1. Leer un número entero N y calcule y muestre su factorial N!, por ejemplo: Si el


número es 4, su factorial es: 4*3*2*1= 24

Proceso factorial_calcular
Definir num, i, factorial como real
Escribir "Ingrese el número:"
Leer num
i<-1
factorial<-1
Mientras i<=num hacer
factorial=factorial*i
i=i+1
FinMientras
Escribir "El factorial del número es : ", Factorial

FinProceso

2. Determinar la cantidad de dígitos que tiene un número entero y además


mostrar la suma de los dígitos pares e impares.

Proceso digitos
Definir n, spar, simp, cd,r como real
Escribir "Ingrese el número:"
Leer n
cd<-0
spar<-0
simp<-0
Mientras n<>0 Hacer
r= n mod 10
Si (r mod 2) = 0 entonces

spar=spar+r
Sino
simp=simp+r
FinSi
cd<-cd+1
n<-trunc (n/10)
FinMientras

Escribir "La cantidad de dígitos es :", cd


Escribir "La suma de los dígitos pares es :", spar
Escribir "La suma de los dígitos impares es -:", simp
FinProceso

3. Determinar la suma de los N primeros términos de la siguiente serie:

1+ X + X 2 + X3 + X 4 + ........................
2! 3! 4!

Proceso suma_terminos
Definir num, ex, den, x, t, i, st,stotal como real
Escribir "Ingrese el número de términos"
Leer t
Escribir "Ingrese el valor de x"
Leer x
i=1
St=0
den=1
ex=1
num=x
Mientras i<=t Hacer
num=num
den=den+1
ex=ex+1
St=St+(num^ex/den)
i=i+1
FinMientras
stotal= St+1+x
Escribir "La suma de los términos es :", stotal
FinProceso

4. A una fiesta asistieron personas de diferentes edades y sexos. Construir un


algoritmo dadas las edades y sexos de las personas. Calcular:

- Cuántas personas asistieron a la fiesta


- Cuántos hombres y cuantas mujeres
- Promedio de edades por sexo
- La edad de la persona más joven que asistió –No se permiten menores
de edad a la fiesta
- Ingresar datos hasta que se ingrese la edad cero

5. En un centro meteorológico se llevan los promedios mensuales de las lluvias


caídas en las principales regiones del país. Existen 3 regiones importantes.
NORTE, CENTRO y SUR. Escriba un algoritmo para calcular lo siguiente:

- El promedio anual de la región centro.


- El mes y región con menor lluvia en la región sur.
- La región con mayor lluvia anual.

Proceso caida_mes
Definir dmayor,dmenor,promedio,cmayor,cmenor,cmm, i como real
dmayor <- 0
dmenor <- 0
cmayor <- 0
cmenor <- 0
promedio <- 0
Para i<-1 Hasta 30 Con Paso 1 Hacer
Escribir "PROCESO ", i
Escribir "Ingrese el valor de cantidad de agua en mm:"
Leer cmm

promedio <- promedio+cmm


Si i = 1 O cmayor<cmm Entonces
cmayor <- cmm
dmayor <- i
FinSi
Si i = 1 O cmenor>cmm Entonces
cmenor <- cmm
dmenor <- i
FinSi
Escribir ""
FinPara
promedio <- promedio/30
Escribir "Valor de dia mayor: ", dmayor
Escribir "Valor de dia menor: ", dmenor
Escribir "Valor de cantidad mayor: ", cmayor
Escribir "Valor de cantidad menor: ", cmenor
Escribir "Valor de promedio: ", promedio
FinProceso

6. En un estadio se tienen 5 tipos diferentes de localidades, las cuales se


identifican por un valor comprendido entre 1 y 5. Los precios de cada
localidad, y los datos referentes a las ventas de boletos para el próximo
juego se proporcionan como sigue:

Precios: p1, p2, p3, p4, p5


Localidad1 Cant1
Localidad2 Cant2
…. ….
Localidad 5 Cant5
Diseñe un algoritmo para:

 Lea los precios


 Lea los datos de las ventas de boletos
 Imprima para cada venta, la clave, la cantidad y el importe total de los boletos
vendidos en esta venta
 Calcule e imprima la cantidad de boletos vendidos de cada tipo
 Calcule e imprima la recaudación total del estadio.

Proceso BoletosDeUnEstadio
Definir bvl1, bvl2, bvl3, bvl4, bvl5,pl1, pl2, pl3, pl4, pl5,n,clave, cb, it, rt,i,
localidad,precio como real
bvl1 <- 0
bvl2 <- 0
bvl3 <- 0
bvl4 <- 0
bvl5 <- 0
rt <- 0
Escribir Sin Saltar "Ingrese el valor de precio localidad 1:"
Leer pl1
Escribir Sin Saltar "Ingrese el valor de precio localidad 2:"
Leer pl2
Escribir Sin Saltar "Ingrese el valor de precio localidad 3:"
Leer pl3
Escribir Sin Saltar "Ingrese el valor de precio localidad 4:"
Leer pl4
Escribir Sin Saltar "Ingrese el valor de precio localidad 5:"
Leer pl5
Escribir Sin Saltar "Ingrese el valor de n:"
Leer n
Para i<-1 Hasta n Con Paso 1 Hacer
Escribir "PROCESO ", i
Escribir Sin Saltar "Ingrese el clave:"
Leer clave
Escribir Sin Saltar "Ingrese el valor de cantidad de boletos:"
Leer cb
Escribir "Seleccione el valor de localidad."
Escribir " 1.- Uno"
Escribir " 2.- Dos"
Escribir " 3.- Tres"
Escribir " 4.- Cuatro"
Escribir " 5.- Cinco"
Escribir Sin Saltar " :"
Repetir
Leer localidad
Si localidad<1 O localidad>5 Entonces
Escribir Sin Saltar "Valor incorrecto. Ingréselo nuevamente.: "
FinSi
Hasta Que localidad>=1 Y localidad<=5
Si localidad = 1 Entonces
precio <- pl1
bvl1 <- bvl1+cb
FinSi
Si localidad = 2 Entonces
precio <- pl2
bvl2 <- bvl2+cb
FinSi
Si localidad = 3 Entonces
precio <- pl3
bvl3 <- bvl3+cb
FinSi
Si localidad = 4 Entonces
precio <- pl4
bvl4 <- bvl4+cb
FinSi
Si localidad = 5 Entonces
precio <- pl5
bvl5 <- bvl5+cb
FinSi
it <- cb*precio
rt <- rt+it
Escribir "Clave: ", clave
Escribir "Valor de importe total: ", it
Escribir "Valor de precio: ", precio
Escribir ""
FinPara
Escribir "Valor de boletos vendidos localidad 1: ", bvl1
Escribir "Valor de boletos vendidos localidad 2: ", bvl2
Escribir "Valor de boletos vendidos localidad 3: ", bvl3
Escribir "Valor de boletos vendidos localidad 4: ", bvl4
Escribir "Valor de boletos vendidos localidad 5: ", bvl5
Escribir "Valor de recaudacion total: ", rt
FinProceso

7. Una clase consta de n estudiantes (con 1<=n<=50), cada uno de los cuáles
cursa 5 materias. Para cada alumno se ingresa, clave y las 5 calificaciones.
Escriba un algoritmo para calcular el promedio entero y una barra horizontal
de asteriscos como representación gráfica del promedio.

8. Construir un programa que determine la potencia de mn siendo m un número


real y n un número entero. Considere que n puede ser positivo, negativo o cero.
No use ningún método Math.

Proceso potencia
Definir num, pot,rpta como real
Escribir "Ingrese un numero: "
Leer num
Escribir "Ingrese la potencia: "
Leer pot
Si pot=0 Entonces
Escribir "El resultado es: 1"
Sino
Si pot < 0 Entonces
pot<-abs(pot)
rpta <- num
Mientras pot>1 Hacer
rpta <- rpta * num
pot <- pot - 1
FinMientras
Escribir rpta
rpta<-1/rpta
Escribir "El resultado es: ", rpta
Sino
rpta <- num
Mientras pot>1 Hacer
rpta <- rpta * num
pot <- pot - 1
FinMientras
Escribir "El resultado es: ", rpta
FinSi
FinSi
FinProceso
9. Hacer un programa que calcule el sueldo mensual de N empleados de una
empresa. Se ingresa el nombre, número de días trabajados, faltas por cada
empleado. También se pide el monto total de sueldos de todos los empleados.
El número de empleados que ganan entre 2500 y 3500. El número de
empleados que ganan menos de 1000 o más de 4000. Considere constante el
pago por día a cada empleado y que el descuento por día de falta es de 100%
del pago diario.

Proceso sueldo_empleados
empleados_menos_1000 <- 0
empleados_entre_2500_y_3500 <- 0
empleados_mas_4000 <- 0
sueldos_de_todos <- 0
Escribir Sin Saltar "Ingrese el valor de n:"
Leer n
Para i<-1 Hasta n Con Paso 1 Hacer
Escribir "PROCESO ", i
Escribir Sin Saltar "Ingrese el nombre:"
Leer nombre
Escribir Sin Saltar "Ingrese el valor de dias trabajados:"
Leer dias_trabajados
Escribir Sin Saltar "Ingrese el valor de faltas:"
Leer faltas
Escribir Sin Saltar "Ingrese el valor de pago por dia:"
Leer pago_por_dia
sueldo_mensual <- (dias_trabajados-faltas)*pago_por_dia
Si sueldo_mensual<1000 Entonces
empleados_menos_1000 <- empleados_menos_1000+1
FinSi
Si sueldo_mensual>=2500 Y sueldo_mensual<=3500 Entonces
empleados_entre_2500_y_3500 <-
empleados_entre_2500_y_3500+1
FinSi
Si sueldo_mensual>4000 Entonces
empleados_mas_4000 <- empleados_mas_4000+1
FinSi
sueldos_de_todos <- sueldos_de_todos+sueldo_mensual
Escribir "Nombre: ", nombre
Escribir "Valor de sueldo mensual: ", sueldo_mensual
Escribir ""
FinPara
Escribir "Valor de empleados menos 1000: ", empleados_menos_1000
Escribir "Valor de empleados entre 2500 y 3500: ",
empleados_entre_2500_y_3500
Escribir "Valor de empleados mas 4000: ", empleados_mas_4000
Escribir "Valor de sueldos de todos: ", sueldos_de_todos
FinProceso

10. Se lanza un dado reiteradas veces hasta que el valor del tiro es 1. Determinar la
cantidad de veces que se lanzó el dado y el puntaje acumulado, si lo que se
acumula es el valor del tiro.

Proceso dado
ST=0
cont=0
Mientras i<>1 Hacer
Escribir "Ingrese el número que se mostro en el dado"
Leer i
ST=ST+i
cont=cont+1
FinMientras
Escribir "La acumulado es:", ST
Escribir "El número de tiros realizados son:", cont
FinProceso

11. Determinar la suma de los N primeros términos de la serie de Fibonacci, y


mostrar sus valores considerando que N sea mayor que 1. La secuencia de
la serie es el siguiente:

0, 1, 1, 2, 3, 5, 8, 13, 21, .......................

Proceso suma_ números

Escribir "Ingrese el número de términos:"


Leer n
ST=0
X1=1
X2=2
i=2
Mientras i<=n Hacer
T=1+0
X3=X2+X1
X1=X2
X2=X3
ST=ST+X3
i=i+1
FinMientras
Escribir "La suma de términos es :", ST
FinProceso

12. Convertir un número entero de base 10 a una base menor que 10, mostrando el
resultado en pantalla.

Proceso número_ menor_diez


Escribir "Ingrese el número:"
Leer n
SN=1
Cont=0
Mientras SN<>0 Hacer
Si n Es Multiplo De 10 Entonces n=n/10
Cont=cont+1
Sino
SN=0
FinSi
N2=n
FinMientras
Escribir "La suma de los términos es :", N2
Escribir "El número de intentos para bajarle la base de 10 han sido :",
Cont
FinProceso
13. El Dpto. de Tránsito y Seguridad Vial desea saber de los “n” autos que entran a la
ciudad de Lima, cuantos entran con calcomanía de cada color.
Conociendo el último dígito de la placa de cada automóvil se puede
determinar el color de la calcomanía utilizando la siguiente relación:

Dígito Color

1o2 Amarilla.

3o4 Rosa

5o6 Roja

7o8 Verde

9o0 Azul

Proceso autos_ lima


Escribir "Ingrese el número de autos que ingresan a la ciudad"
Leer n
i=1
Cont1=0
Cont2=0
Cont3=0
Cont4=0
Cont5=0
Mientras i<=n Hacer
Escribir "Ingrese el último dígito de la placa"
Leer d
Si d=1 o d=2 Entonces
Cont1=Cont1+1
Sino Si d=3 o d=4
Cont2=Cont2+1
Sino
Si d=5 o d=6
Cont3=Cont3+1
Sino
Si d=7 o d=8
Cont4=Cont4+1
Sino
Cont5=Cont5+1
FinSi
FinSi
FinSi
FinSi
i=i+1
FinMientras
Escribir "El número de autos que entran con calcomania amarilla son :",
Cont1
Escribir "El número de autos que entran con calcomania rosa son :",
Cont2
Escribir "El número de autos que entran con calcomania roja son :",
Cont3
Escribir "El número de autos que entran con calcomania verde son :",
Cont4
Escribir "El número de autos que entran con calcomania azul son :",
Cont5
FinProceso

14. En una tienda de descuento las personas que van a pagar el importe de su compra
llegan a la caja y sacan una bolita de color, que les dirá que descuento tendrán
sobre el total de su compra. Determinar la cantidad que pagará cada cliente desde
que la tienda abre hasta que cierra. Se sabe que si la bolita es roja, el cliente
obtendrá un 40% de descuento si es amarilla un 25% y si es blanca no
obtendrá descuento.

15. Un censador recopila ciertos datos aplicando encuestas para el último censo
Nacional de Población y Vivienda. Desea obtener de todas las personas que
alcance a encuestar en un día, que porcentaje tiene estudios de primaria,
secundaria, carrera técnica, estudios profesionales y estudios de
postgrado.

Proceso descuento_en_tienda
clientes_atendidos <- 0;
total_de_ventas <- 0;
Repetir
Escribir Sin Saltar "Ingrese el valor de total de la compra:";
Leer total_de_la_compra;
total_de_ventas <- total_de_ventas+total_de_la_compra;
clientes_atendidos <- clientes_atendidos+1;
Escribir "Clientes atendidos: ", clientes_atendidos;
Escribir "Total de ventas: ", total_de_ventas;
Repetir
Escribir Sin Saltar "¿Desea repetir el proceso? (S/N):";
Leer tecla_repetir;
Hasta Que tecla_repetir='s' O tecla_repetir='n' O tecla_repetir='S' O
tecla_repetir='N'
Hasta Que tecla_repetir='n' O tecla_repetir='N'
Escribir "Valor de clientes atendidos: ", clientes_atendidos;
Escribir "Valor de total de ventas: ", total_de_ventas;
FinProceso

16. Suponga que tiene usted una tienda y desea registrar las ventas en su
computadora. Diseñe un algoritmo que lea por cada cliente, el monto total de su
compra. Al final del día que escriba la cantidad total de ventas y el número de
clientes atendidos.

Proceso censo_de_personas_y_vivienda
total_de_personas <- 0;
porcentaje_con_primaria <- 0;
porcentaje_con_secundaria <- 0;
porcentaje_con_carrera_tecnica <- 0;
porcentaje_con_profesional <- 0;
porcentaje_con_postgrado <- 0;
Repetir
Escribir "Seleccione el valor de tipo de estudio.";
Escribir " 1.- Primaria";
Escribir " 2.- Secundaria";
Escribir " 3.- Carrera técnica";
Escribir " 4.- Profesional";
Escribir " 5.- Postgrado";
Escribir Sin Saltar " :";
Repetir
Leer tipo_de_estudio;
Si tipo_de_estudio<1 O tipo_de_estudio>5 Entonces
Escribir Sin Saltar "Valor incorrecto. Ingréselo nuevamente.: ";
FinSi
Hasta Que tipo_de_estudio>=1 Y tipo_de_estudio<=5;
Si tipo_de_estudio = 1 Entonces
porcentaje_con_primaria <- porcentaje_con_primaria+1;
FinSi
Si tipo_de_estudio = 2 Entonces
porcentaje_con_secundaria <- porcentaje_con_secundaria+1;
FinSi
Si tipo_de_estudio = 3 Entonces
porcentaje_con_carrera_tecnica <- porcentaje_con_carrera_tecnica+1;
FinSi
Si tipo_de_estudio = 4 Entonces
porcentaje_con_profesional <- porcentaje_con_profesional+1;
FinSi
Si tipo_de_estudio = 5 Entonces
porcentaje_con_postgrado <- porcentaje_con_postgrado+1;
FinSi
total_de_personas <- total_de_personas+1;
Escribir "";
Repetir
Escribir Sin Saltar "¿Desea repetir el proceso? (S/N):";
Leer tecla_repetir;
Hasta Que tecla_repetir='s' O tecla_repetir='n' O tecla_repetir='S' O
tecla_repetir='N'
Hasta Que tecla_repetir='n' O tecla_repetir='N'
Si total_de_personas = 0 Entonces
porcentaje_con_primaria <- 0;
SiNo
porcentaje_con_primaria <-
100.0*porcentaje_con_primaria/total_de_personas;
FinSi
Si total_de_personas = 0 Entonces
porcentaje_con_secundaria <- 0;
SiNo
porcentaje_con_secundaria <-
100.0*porcentaje_con_secundaria/total_de_personas;
FinSi
Si total_de_personas = 0 Entonces
porcentaje_con_carrera_tecnica <- 0;
SiNo
porcentaje_con_carrera_tecnica <-
100.0*porcentaje_con_carrera_tecnica/total_de_personas;
FinSi
Si total_de_personas = 0 Entonces
porcentaje_con_profesional <- 0;
SiNo
porcentaje_con_profesional <-
100.0*porcentaje_con_profesional/total_de_personas;
FinSi
Si total_de_personas = 0 Entonces
porcentaje_con_postgrado <- 0;
SiNo
porcentaje_con_postgrado <-
100.0*porcentaje_con_postgrado/total_de_personas;
FinSi
Escribir "Valor de total de personas: ", total_de_personas;
Escribir "Valor de porcentaje con primaria: ", porcentaje_con_primaria;
Escribir "Valor de porcentaje con secundaria: ", porcentaje_con_secundaria;
Escribir "Valor de porcentaje con carrera tecnica: ",
porcentaje_con_carrera_tecnica;
Escribir "Valor de porcentaje con profesional: ", porcentaje_con_profesional;
Escribir "Valor de porcentaje con postgrado: ", porcentaje_con_postgrado;
FinProceso

17. Se desea procesar las operaciones bancarias de un cliente a quien se le pide por
única vez su nombre y saldo inicial. Luego en un proceso repetitivo se presenta
las siguientes opciones:

Depósito, Retiro, Fin. Al ingresar la opción elegida si esta fue ‘D’ se pide si es en
efectivo
(1) o con cheque (2), se ingresa la cantidad, y si fuese cheque se descuenta el
1% por comisión y se actualiza su saldo mostrándolo en pantalla. Si la opción
elegida fue ‘R’ se ingresa la cantidad verificando que ésta sea menor al saldo
actualizándolo, de lo contrario dar un mensaje de sobregiro. Si la opción elegida
fue ‘F’ mostrar los siguientes resultados:
a.- Nombre, Saldo
inicial. b.- Saldo final.
c.- Número de Depósitos en EFECTIVO y con
CHEQUE. d.- Monto promedio de retiros.
e.- Monto mínimo depositado y máximo retirado.

Proceso registro_de_ventas
clientes_atendidos <- 0;
total_de_ventas <- 0;
Repetir
Escribir Sin Saltar "Ingrese el valor de total de la compra:";
Leer total_de_la_compra;
total_de_ventas <- total_de_ventas+total_de_la_compra;
clientes_atendidos <- clientes_atendidos+1;
Escribir "";
Repetir
Escribir Sin Saltar "¿Desea repetir el proceso? (S/N):";
Leer tecla_repetir;
Hasta Que tecla_repetir='s' O tecla_repetir='n' O tecla_repetir='S' O
tecla_repetir='N'
Hasta Que tecla_repetir='n' O tecla_repetir='N'
Escribir "Valor de clientes atendidos: ", clientes_atendidos;
Escribir "Valor de total de ventas: ", total_de_ventas;
FinProceso

18. Dado un número, invertirlo y determinar si es capicúa. Un número es capicúa,


si al invertirlo resulta el mismo número.

19. Calcular el MCD y el MCM de dos números enteros positivos.

Proceso_Capicua
Inverso<- 0
Escribir Sin Saltar “Ingrese un número”
Leer número
Residuo<- número
Mientras residuo >0 Hacer
Inverso<- inverso*10+residuo mod 10
Residuo<- (residuo-residuo mod 10)/10
FinMientras
Escribir “ ”
Escribir “Valor del número inverso es “, inverso
Escribir Sin Saltar “El número es “, número, “ “
Si número = inverso Entonces
Escribir Sin Saltar “si”
Sino
Escribir Sin Saltar “no”
FinSi
Escribir “ es capicúa”
FinProceso

20. Supóngase que en una reciente elección hubo cuatro candidatos, con
identificadores 1, 2, 3, 4. Usted habrá de encontrar mediante un programa,
el número de votos correspondiente a cada candidato y el porcentaje que
obtuvo respecto al total de los votantes. El usuario ingresara los votos de
manera desorganizada, tal y como se obtuvieron en la elección, el final de
datos está representado por un cero.

Proceso_MCD_MCM
Escribir "Ingrese los 2 números"
Leer n1, n2
A=n1
B=n2
C=n1
D=n2
Mientras A=B Hacer
Si A>B Entonces
A=A-B
Sino
B=B-A
FinSi
FinMientras
MCM=(n1*n2)/A
Mientras c<>D Hacer
Si C>D Entonces
C=C-D
Sino
D=D-C
FinSi
FinMientras
MCM=(n1*n2)/A
Escribir "El MCM de los 2 números es -->", MCM
Escribir "El MCD de los 2 números es -->", C
FinProceso

21. La compañía de luz “Del Centro” desea imprimir los recibos de un grupo de
empleados. Desea obtener también el total de cobros del periodo. Por cada
cliente se ingresa su nombre, dirección, registro inicial y registro final. El
cobro se efectúa en base a la siguiente tabla:
 140 KVH o Menos S/. 3.20
 Los siguientes 170 KVH S/. 0.15 por KVH
 Exceso sobre 310 KVH S/. 0.097 por KVH
 Por cada cliente se debe imprimir un recibo indicando sus datos y montos.

Definir voto, voto_1,voto_2,voto_3,voto_4,total,1P,2P,3P,4P como Entero


Escribir “Ingrese voto, 1,2,3 o 4”
Leer voto
Mientras voto=1 O voto=2 O voto=3 O voto=4
Si voto=1 entonces
voto_1=voto_1+1
Fin Si
Si voto=2 entonces
voto_2=voto_2+1
Fin Si
Si voto=3 entonces
voto_3=voto_3+1
Fin Si
Si voto=4 entonces
voto_4=voto_4+1
Fin Si
Leer voto
FinMientras
total=voto_1+voto_2+voto_3+voto_4
1P=voto_1*100/total
2P=voto_2*100/total
3P=voto_3*100/total
4P=voto_4*100/total
Escribir “El número de votantes fue “, total
Escribir “Los votos de A fueron “,voto_1 “Reunió un porcentaje de “,1P
Escribir “Los votos de A fueron “,voto_2 “Reunió un porcentaje de “,2P
Escribir “Los votos de A fueron “,voto_3 “Reunió un porcentaje de “,3P
Escribir “Los votos de A fueron “,voto_4 “Reunió un porcentaje de “,4P
FinProceso

22. En una universidad con un número determinado de alumnos se desea


obtener el promedio y el porcentaje de la población femenina, el promedio y
porcentaje de la población masculina y el promedio general. Por cada alumno
se ingresa MATRICULA, SEXO, SEMESTRE y PROMEDIO. Calcular e
imprimir lo solicitado.

23. Mostrar la suma de todos los divisores de un número entero. Si el número sólo
tiene por divisores al 1 y al propio número, mostrar además el mensaje
“Número Primo”.

24. Encontrar todos los números primos entre dos números enteros ingresados por
teclado.

También podría gustarte