EJERCICIOS RESUELTOS
TI7: EJERCICIOS SOBRE CICLOS (MIENTRAS QUE, HAGA MIENTRAS Y PARA)
1. Elaborar un algoritmo que encuentre el factorial de un número positivo.
Análisis:
Datos de Entrada: n Datos de Salida: fac
Proceso: Un ciclo para multiplicar n números desde 1 hasta el número que ingresó el usuario y una función que devuelva el factorial del número que ingresó el usuario.
Algoritmo:
Inicio
Entero: n, facto
Escriba:” Digite el término hasta donde desea generar el factorial ” Lea: n
facto factorial(n)
Escriba: ”El factorial de”, n, ”es =”, facto Fin
Funcion factorial (Entero: N) Entero: con, fac1 Si (N=0) entonces
fac 1 sino
Para(con=1, N, 1) haga fac fac * con Fpara
Finsi Retorne fac Fin_Funcion
2. Elaborar un algoritmo que dado un valor de X, determine el valor de F(X) definida por la siguiente serie:
Nota: Si X = 3 por ejemplo, debe llegar hasta el término y debería dar como resultado -2.
Análisis:
Datos de Entrada: X Datos de Salida: F(X)
Proceso: Un ciclo para sumar los términos de una serie que empieza desde 1 hasta el número que ingreso el usuario y una función que devuelva el valor de F(x) con respecto al valor que ingresó el usuario.
Algoritmo:
Inicio
Real: numx, resultado
Escriba:”Digite el valor de X, para determinar el valor de F(X) de la serie”
Lea: numx
resultado serie(numx)
Escriba: “Para X = ”, numx, “el valor de F(X) = ”, resultado Fin
Funcion serie (Real: x)
Real: fx0, i0, fac1, ter1 Mq (i<x) haga
fxfx+ter ii+1 facfac*i
terx^i / (fac*-1^i) FMq
Retorne fx+ter Fin_Procedimiento
3. Una gasolinera presta 4 clases de servicios. Por cada servicio que preste se tienen los siguientes datos: clase de servicio prestado (valores del 1 al 4), jornada en la que se prestó el servicio (M: mañana, T: tarde) y valor del servicio. Al final del día se requiere determinar el valor producido por cada clase de servicio, el número de veces que se prestó cada servicio, el servicio que más se prestó y si éste se prestó más en la mañana o en la tarde. Elabore un algoritmo para resolver este problema.
Análisis:
Datos de Entrada: claseser, jornada, precio
Datos de Salida: totals1, totals2, totals3, totals4, nums1, nums2, nums3, nums4, conam1, conam2, conam3,conam4, conpm1, conpm2, conpm3, conpm4
Proceso:
- Un ciclo cualitativo para sumar el valor total de cada tipo de servicio y contar el número de veces que se prestó cada servicio.
- Un procedimiento que muestre el valor total de cada tipo de servicio, la cantidad de veces que se prestó cada servicio y que pueda mostrar cuál fue el servicio que más se prestó y en cuál jornada.
Algoritmo:
Inicio
Entero: claseser Caracter: jornada Real: precio
Escriba:”Digite el tipo de servicio prestado (valores del 1 al 4), la jornada en que se prestó el servicio M: mañana, T: tarde, y el valor del servicio”
Lea: claseser, jornada, precio gasolinera (claseser,jornada,precio) Fin
Procedimiento gasolinera (Entero: servicio, Caracter: jorna, Real: valor)
Entero: nums10, nums20, nums30, nums40, conam10, conam20, conam30,conam40, conpm10, conpm20, conpm30, conpm40 Real: totals10, totals20, totals30, totals40
Haga
SeleccionCaso (servicio)
Caso 1: totals1 totals1 + valor nums1 nums1 + 1 SeleccionCaso (jorna)
Caso ‘M’: Caso ‘m’: conam1 conam1 + 1 salga
Caso ‘T’: Caso ‘t’: conpm1 conpm1 + 1 salga
Otro_Caso: Escriba: “Jornada Incorrecta”
Fcaso salga
Caso 2: totals2 totals2 + valor nums2 nums2 + 1
SeleccionCaso (jorna)
Caso ‘M’: Caso ‘m’: conam2 conam2 + 1 salga
Caso ‘T’: Caso ‘t’: conpm2 conpm2 + 1 salga
Otro_Caso: Escriba: “Jornada Incorrecta”
Fcaso salga
Caso 3: totals3 totals3 + valor nums3 nums3 + 1 SeleccionCaso (jorna)
Caso ‘M’: Caso ‘m’: conam3 conam3 + 1 salga
Caso ‘T’: Caso ‘t’: conpm3 conpm3 + 1 salga
Otro_Caso: Escriba: “Jornada Incorrecta”
Fcaso salga
Caso 4: totals4 totals4 + valor nums4 nums4 + 1 SeleccionCaso (jorna)
Caso ‘M’: Caso ‘m’: conam4 conam4 + 1 salga
Caso ‘T’: Caso ‘t’: conpm4 conpm4 + 1 salga
Otro_Caso: Escriba: “Jornada Incorrecta”
Fcaso salga
Otro_Caso: Escriba: “Clase de servicio incorrecto”
Fin_caso
Escriba:”Digite el tipo de servicio prestado (valores del 1 al 4), la jornada en que se prestó el servicio M: mañana, T: tarde. Y el valor del servicio”
Lea: servicio, jorna, valor Mq((servicio >0)˄( servicio <5))
Escriba: “El valor producido por el servicio 1 es: ”, totals1,
“El valor producido por el servicio 2 es: ”, totals2,
“El valor producido por el servicio 3 es: ”, totals3,
“El valor producido por el servicio 4 es: ”, totals4 Escriba: “El número de veces que se prestó cada servicio es:
Servicio 1:”,nums1,
“Servicio 2:”, nums2,
“Servicio 3:”, nums3,
“Servicio 4:”, nums4
Si((nums1>nums2)˄(nums1>nums3)˄(nums1>nums4))ent Escriba: “El servicio que más se prestó fue el servicio 1”
Si(conam1>conpm1)ent
Escriba: ”Y se prestó más en la jornada de la mañana”
sino
Escriba: “Y se prestó más en la jornada de la tarde”
Fin_si sino
Si((nums2>nums3)˄(nums3>nums4))ent
Escriba: “El servicio que más se prestó fue el servicio 2”
Si(conam2>conpm2)ent
Escriba: ”Y se prestó más en la jornada de la mañana”
sino
Escriba: “Y se prestó más en la jornada de la tarde”
Fin_si sino
Si(nums3>nums4)ent
Escriba: “El servicio que más se prestó fue el servicio 3”
Si(conam3>conpm3)ent
Escriba:”Y se prestó más en la jornada de la mañana”
sino
Escriba: “Y se prestó más en la jornada de la tarde”
Fin_si Sino
Escriba: “El servicio que más se prestó fue el servicio 4”
Si(conam4>conpm4)ent
Escriba: ”Y se prestó más en la jornada de la mañana”
sino
Escriba: “Y se prestó más en la jornada de la tarde”
Fin_si Fin_si Fin_si
Fin_si Fin_Procedimiento
4. En las elecciones se tienen 4 candidatos. Una persona elige su voto de acuerdo al número que indique al candidato: 1. Pedro 2. Pablo 3. Martha 4. Juan y 5. Voto en Blanco. Decir cuál candidato fue el ganador, el número de votos de cada uno y además el total de personas que votaron.
Análisis:
Datos de Entrada: votacion
Datos de Salida: con1, con2, con3, con4, con5, total
Proceso: Un ciclo cualitativo para sumar el número de votos que obtiene cada candidato y un procedimiento que muestre el número de votos que obtuvo cada candidato y cuál fue el candidato ganador.
Algoritmo:
Inicio
Entero: votacion
Escriba:” Digite su voto 1. Pedro 2. Pablo 3. Martha 4. Juan y 5. Voto en Blanco”
Lea: votacion elecciones(votacion) Fin
Procedimiento elecciones(entero:voto)
Entero: con10, con20, con30, con40, con50, total0, Mq((voto>0)˄(voto<6))haga
SeleccionCaso(voto)
Caso 1: con1con1+1 salga
Caso 2: con2con2+1 salga
Caso 3: con3con3+1 salga
Caso 4: con4con4+1 salga
Otro_Caso: con5con5+1 Fin_caso
Escriba:”Digite su voto 1. Pedro 2. Pablo 3. Martha 4. Juan y 5. Voto en Blanco”
Lea: voto FMq
total con1+con2+con3+con4+con5
Si((con1>cont2)˄(con1>con3)˄(con1>con4)˄(con1>con5))ent Escriba: ”El candidato ganador es: Pedro”
sino
Si((con2>con3)˄(con2>con4)˄(con2>con5))ent Escriba: ”El candidato ganador es: Pablo”
sino
Si( (con3>con4)˄(con3>con5))ent
Escriba: ”El candidato ganador es: Martha”
sino
Si( con4>con5)ent
Escriba: ”El candidato ganador es: Juan”
sino
Si(con5>con4)ent
Escriba: ”ganó el voto en blanco”
sino
Escriba:”Empate técnico”
Fin_si Fin_si
Fin_si Fin_si
Fin_si
Escriba:”el número de votos que obtuvo cada candidato es:
1.Pedro: ”,con1,”votos 2.Pablo: ”,con2,”votos 3.Martha: ”,con3,”votos 4.Juan: ”,con4,”votos
5.voto en blanco”,con5,”votos
Y el número total de votantes es de: ”,total Fin_Procedimiento
Prueba de escritorio:
Inicio
votacion
Digite su voto 1. Pedro 2. Pablo 3. Martha 4. Juan y 5. Voto en Blanco votacion4
elecciones(4)
Procedimiento elecciones(voto4) con10
con20 con30 con40 con50 total0
Mq((4>0)˄(4<6)) SeleccionCaso(4)
Caso 4: con40+11 salga
Fin_caso
Digite su voto 1. Pedro 2. Pablo 3. Martha 4. Juan y 5. Voto en Blanco
Voto1 Mq((1>0)˄(1<6))
SeleccionCaso(1)
Caso 1: con10+11 salga
Fin_caso
Digite su voto 1. Pedro 2. Pablo 3. Martha 4. Juan y 5. Voto en Blanco
Voto4 Mq((4>1)˄(4<6))
SeleccionCaso(4)
Caso 4: con41+12 salga
Fin_caso
Digite su voto 1. Pedro 2. Pablo 3. Martha 4. Juan y 5. Voto en Blanco
Voto0 Mq((0>0) ˄(0<6)) FMq
total1+0+0+2+03
Si((1>0)˄(1>0)˄(1>2)˄(1>0))ent Sino
Si((0>0)˄(0>2) ˄(0>0))ent Sino
Si((0>2)˄(0>0))ent Sino
Si(2>0)ent
El candidato ganador es: Juan Fin_si
Fin_si Fin_si
Fin_si
El número de votos que obtuvo cada candidato es:
1.Pedro: 1 votos 2.Pablo: 0 votos 3.Martha: 0 votos 4.Juan: 2 votos
5.voto en blanco 0 votos
Y el número total de votantes es de: 3 Fin_procedimiento
Fin
6. Generar las tablas de multiplicar de P hasta Q, tales que P <= Q, caso contrario generarlas desde Q hasta P.
Análisis:
Datos de Entrada: p,q Datos de Salida: con, n
Proceso: Un ciclo para multiplicar cada uno de los números desde un numero P hasta un numero Q o viceversa con cada uno de los números del 1 al 10 y un procedimiento que muestre las tablas de multiplicar obtenidas desde un numero P hasta un numero Q o viceversa.
Algoritmo:
Inicio
Entero:p,q
Escriba: ”Ingrese dos números y le muestro las tablas de multiplicar desde el número
menor hasta el mayor”
Lea:p,q tablas(p,q) Fin
Procedimiento tablas(Entero:P,Q) Entero:con,n1
Si(P<=Q)ent
Escriba:”las tablas de multiplicar de ”,P,”a”,Q,”son:”
Para(con=P,Q,1)haga Para(n=1,10,1)
Escriba: “”,con,”*”,n,”=”,con*n Fpara
Fpara Sino
Escriba:”las tablas de multiplicar de ”,Q,”a”,P,”son:”
Para(con=Q,P,1)haga Para(n=1,10,1)
Escriba: “”,con,”*”,n,”=”,con*n Fpara
Fpara Fin_si
Fin_Procedimiento
Prueba de escritorio:
Inicio P Q
Ingrese dos números y le muestro las tablas de multiplicar desde el número menor hasta
el mayor p1q2 tablas(1,2)
Procedimiento tablas(P1,Q2) con
n
Si(1<2)ent
las tablas de multiplicar de 1 a 2 son:
para (con=1,2,1) para(n=1,10,1)
1*1=1 para(n=2,10,1)
1*2=2 para(n=3,10,1)
1*3=3 para(n=4,10,1)
1*4=4 para(n=5,10,1)
1*5=5 para(n=6,10,1)
1*6=6 para(n=7,10,1)
1*7=7 para(n=8,10,1)
1*8=8 para(n=9,10,1)
1*9=9 para(n=10,10,1)
1*10=10 Fin_para
para(con=2,2,1) para(n=1,10,1)
2*1=2 para(n=2,10,1)
2*2=4 para(n=3,10,1)
2*3=6 para(n=4,10,1)
2*4=8 para(n=5,10,1)
2*5=10 para(n=6,10,1) 2*6=12 para(n=7,10,1) 2*7=14 para(n=8,10,1) 2*8=16 para(n=9,10,1) 2*9=18 para(n=10,10,1)
2*10=20 Fin_para
Fin_para Fin_si Fin_Procedimiento Fin