Professional Documents
Culture Documents
Segmentos de
Borrador de repeticiones Respuesta
pseudocdig
s
a. mientraso (a 4)
Si (a > b) entonces PAS a b suma1
suma1 O
1 1 4 0
suma1 + b 2 1
2 7 4 suma1: 11
fin
3 80 1 1
si
a 4 6 0
1 1
5 4 3
1 1
a- 6 1
b. mientras
2 (a > b and PASO a b cont1
b 0)
b 1 1 4 0
Si
(a > b) cont1: 4
2 1
2 3 1
b + entonces 3 3
1 2 2
3 cont1 4 4
1 1 3
cont1 + 1
fin mientras
fin 5 5
1 0 4
c. mientras
si (b >= 2) 6
Sia (a mod 2= 0)
entonces
a suma1 suma1: 26
+ suma1 + a
sino
1
bsuma2
suma2
b-1 + a fin si suma2: 13
aa
fin + 1
mient
b
d. mientras (a b or b PASO a b c cont2
ras
b -1
> c) 1 1 4 1 0
fin
Si (b = 4) cont2: 4
mient 2 2
1 4 2 1
entonces
ras 3 80 4 3 2
cont2
cont2 + 1 4 6 4 4 3
fin 5 4 4 5 4
si
a
a
2
cc
+1
fin
mient
ras
Disee algoritmos en pseudocdigo utilizando la estructura repetitiva Mientras, para
los siguientes problemas:
Solucin 1:
Proceso restaurante
Definir cant, opc como Entero
Definir pago, suma como Real
menu<-7.5
opc<-1
suma<-0
Mientras opc=1 Hacer
Escribir Ingresar cantidad de mens a cancelar por el cliente:
Leer cant
pago<-cant*menu
suma<-suma + pago
Proceso restaurante
Definir cant, opc como Entero
Definir pago, suma como Real
menu<-7.5
resp<-'S'
suma<-0
Mientras resp='S' O resp='s') Hacer
Escribir Ingresar cantidad de mens a cancelar por el cliente:
Leer cant
pago<-cant*menu
suma<-suma + pago
Nota: La variable opc debe iniciar en uno y resp en S, porque es la nica forma
de ingresar al proceso repetitivo al menos una vez. Recuerde que la estructura
Mientras evala la condicin al inicio del proceso repetitivo.
2. Se ingresan los resultados de la evaluacin del curso de Qumica; por cada alumno
se informa: su condicin (1 = becado, 2 = no becado) y su calificacin obtenida que
va de 0 a 20. Para estar aprobado debe tener una nota mnima de 14. A partir de
esta informacin se debe mostrar:
La cantidad de alumnos becados y la cantidad de no becados.
El porcentaje de desaprobados y el porcentaje de aprobados.
Solucin:
Proceso prob_2
aprob<-0
desaprob<-0
becado<-0
nobecado<-0
resp<-'S'
Mientras resp='S' o resp='s' Hacer
Escribir "Ingrese la nota: "
Leer n
Escribir "Ingrese si es becado(1) o no(2): "
Leer b
Si n>=14 Entonces
aprob<-aprob+1
Sino
desaprob<-desaprob+1
FinSi
Kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
kkk
Si b=1 Entonces
becado<-becado+1
FinSi
Si b=2 Entonces
nobecado<-nobecado+1
FinSi
total<-aprob+desaprob
p_aprob<-(aprob*1)/total
p_desaprob<-(desaprob*1)/total
Escribir "Desea Ingresar las notas de mas alumnos S/N: "
Leer resp
FinMientras
Escribir "Cantidad de becados es: ", becado
Escribir "Cantidad de No becados es: ", nobecado
Escribir "Porcentaje de aprobados es ", p_aprob
Escribir "Porcentaje de desaprobados es ", p_desaprob
FinProceso
3. Realizar un algoritmo que permita ingresar una gran cantidad de nmeros enteros
positivos y calcule cantidad de mltiplos de 3 y mltiplos de 7 encontrados en la
relacin de nmeros ingresados. El algoritmo termina cuando se ingresa un
nmero mayor a 100.
Proceso prob_3
Definir m3, m7, n Como Entero
Definir resp Como Caracter
m3<-0
m7<-0
Escribir "Ingrese un numero: "
Leer n
Mientras n>0 Y n<=100 Hacer
Si (n MOD 3)=0 Entonces
m3<-m3+1
FinSi
Si (n MOD 7)=0 Entonces
m7<-m7+1
FinSi
Escribir "Ingrese otro numero: "
Leer n
FinMientras
Escribir "Multiplos de 3: ", m3
Escribir "Multiplos de 7: ", m7
FinProceso
Otra solucin, si nos pidieran ingresar varios nmeros y el programa termine
con una pregunta S/N:
Proceso prob_3
Definir m3, m7, n Como Entero
Definir resp Como Caracter
m3<-0
m7<-0
resp<-'S'
Mientras resp='S' O resp='s' Hacer
Escribir "Ingrese un numero: "
Leer n
Si n>0 Y n<=100 Entonces
Si (n MOD 3)=0 Entonces
m3<-m3+1
FinSi
Si (n MOD 7)=0 Entonces
m7<-m7+1
FinSi
FinSi
Escribir "Desea Ingresar mas numeros S/N: "
Leer resp
FinMientras
Escribir "Multiplos de 3: ", m3
Escribir "Multiplos de 7: ", m7
FinProceso
4. Se realiza un muestreo con N personas, de las cuales se registran sus edades y
sus pesos. Se pide elaborar un algoritmo que calcule el promedio de pesos de las
personas menores de 18 aos y el promedio de pesos de los que tienen 18 aos a
ms.
Anlisis:
1ra Forma:
Proceso prob_4
peso_mayor<-0
peso_menor<-0
cant_mayor<-0
cant_menor<-0
i<-1 // el valor de i, empieza en 1, para la primera persona
Escribir "Ingrese la cantidad de personas: "
Leer n
Mientras i<=n Hacer // evala la condicin para la primera persona
Escribir "Ingrese el peso: "
Leer peso
Escribir "Ingrese la edad: "
Leer edad
Si edad>=18 Entonces
peso_mayor<-peso_mayor + peso
cant_mayor<-cant_mayor + 1
prom_mayor<-peso_mayor/cant_mayor
Sino
peso_menor<-peso_menor + peso
cant_menor<-cant_menor + 1
prom_menor<-peso_menor/cant_menor
FinSi
i<-i+1
FinMientras
Escribir "Promedio de peso de menores de edad: ", prom_menor
Escribir "Promedio de peso de mayores de edad: ", prom_mayor
FinProceso
Veamos la prueba de escritorio:
2da Forma:
Proceso prob_4
peso_mayor<-0
peso_menor<-0
cant_mayor<-0
cant_menor<-0
resp<-'S'
Mientras resp='S' O resp='s' Hacer
Escribir "Ingrese el peso: "
Leer peso
Escribir "Ingrese la edad: "
Leer edad
Si edad>=18 Entonces
peso_mayor<-peso_mayor + peso
cant_mayor<-cant_mayor + 1
prom_mayor<-peso_mayor/cant_mayor
Sino
peso_menor<-peso_menor + peso
cant_menor<-cant_menor + 1
prom_menor<-peso_menor/cant_menor
FinSi
Escribir "Desea Ingresar ms personas S/N: "
Leer resp
FinMientras
Escribir "Promedio de peso de menores de edad: ", prom_menor
Escribir "Promedio de peso de mayores de edad: ", prom_mayor
FinProceso
Proceso mejor_nota_MIENTRAS
Definir i, mayor, nota como Entero
Definir resp Como Caracter
Definir nombre, mejor como Cadena
i<-1
mayor<-0
resp<-'S'
Mientras resp='S' O resp='s' Hacer
Escribir "Ingrese nombre del Alumno ", i, ":"
Leer nombre
Escribir "Ingrese una nota: "
Leer nota
Si nota>mayor Entonces
mayor<-nota
mejor<-nombre
FinSi
i<-i+1
Escribir "Desea registrar mas Alumnos(S/N): "
Leer resp
FinMientras
Escribir "Mejor Alumno(a) es: ", mejor
Escribir "Con nota: ", mayor
FinProceso
6. En una prueba para obtener un puesto de trabajo como Rango de Puntaje
ingeniero de planta se establecen los siguientes rangos: 0 - 49
50 - 79
Mostrar en un informe los siguientes datos: 80 - 100
a) La cantidad de postulantes que se ubicaron en cada uno de los rangos.
b) El total de postulantes que rindieron la prueba.
PROBLEMA 4. El Dpto. de Trnsito y Seguridad Vial desea saber de los n autos que
entran a la ciudad de Lima, cuantos entran con calcomana de cada color.
Conociendo el ltimo dgito de la placa de cada automvil se puede determinar el
color de la calcomana utilizando la siguiente relacin:
Proceso ContarAutos
Definir n, i, ama, ros, roj, ver, azu, digito como Entero
Leer n
ama<- 0
ros<- 0
roj<- 0
ver<- 0
azu<- 0
Para i <- 1 hasta n hacer
Leer digito
Segun digito hacer
1,2: ama<- ama+1
3,4: ros<- ros+1
5,6: roj<- roj+1
7,8: ver<- ver+1
9,0: azu<- ver+1
FinSegun
FinPara
Escribir ama, ros, roj, ver, azu
FinProceso
Proceso media_numero
// Calcular la media de "n" numeros enteros
suma<-0
cont<-0
escribir "Ingresar un numero positivo y nmero negativo para terminar"
leer numero
mientras numero>= 0 hacer
suma <- suma + numero
cont <- cont + 1
escribir "Ingresar un numero positivo y nmero negativo para terminar"
leer numero
finmientras
media <- suma/cont
escribir "La media de los numeros ingresados es: ", media
FinProceso
Proceso Bisiesto
Escribir "Escribir anio: "
Leer anio
Escribir "Escribir mes: "
leer mes
si mes=2 y (anio mod 4 = 0 y ((anio mod 400 = 0) o (anio mod 100 <> 0))) Entonces
escribir "El mes tiene 29 dias"
FinSi
si mes=2 y no (anio mod 4 = 0 y ((anio mod 400 = 0) o (anio mod 100 <> 0))) Entonces
Escribir "El mes tiene 28 dias"
FinSi
si (mes =4 o mes=6 o mes=9 o mes=11) y (anio mod 4 = 0 y ((anio mod 400 = 0) o (anio
mod 100 <> 0))) Entonces
escribir "El mes tiene 30 dias"
FinSi
si (mes =4 o mes=6 o mes=9 o mes=11) y no (anio mod 4 = 0 y ((anio mod 400 = 0) o (anio
mod 100 <> 0))) Entonces
escribir "El mes tiene 30 dias"
FinSi
FinProceso
// La suma de los 100 primeros mientras
Proceso Sumar
Definir i, total Como Entero
i<-1
total<-0
Escribir "EL FACTORIAL DEL NUMERO ", N, " ES: ", FACTORIAL
FinProceso
Proceso clave
Definir clave como Entero
Repetir
Leer clave
Si clave <> 1234 Entonces
Escribir "Clave incorrecta"
FinSi
Hasta que clave=1234
Escribir "Clave correcta"
FinProceso
proceso factorial_Repetir
f<-1
i<-1
Escribir "Ingrese un numero para calcular su factorial: "
Leer n
Repetir
f<-f*i
i<-i+1
Hasta Que i>n
Escribir "Factorial es: ", f
FinProceso
Proceso prob_2
aprob<-0
desaprob<-0
becado<-0
nobecado<-0
resp<-'S'
Mientras resp='S' o resp='s' Hacer
Escribir "Ingrese la nota "
Leer n
Escribir "Ingrese si es becado(1) o no(2)"
Leer b
Si n>=14 Entonces
aprob<-aprob+1
Sino
desaprob<-desaprob+1
FinSi
Si b=1 Entonces
becado<-becado+1
FinSi
Si b=2 Entonces
nobecado<-nobecado+1
FinSi
total<-aprob+desaprob
p_aprob<-(aprob*1)/total
p_desaprob<-(desaprob*1)/total
Escribir "Desea Ingresar las notas de mas alumnos S/N "
Leer resp
FinMientras
Escribir "Porcentaje de aprobados es ", p_aprob
Escribir "Porcentaje de desaprobados es ", p_desaprob
FinProceso
Proceso de_tres_numeros_el_mayor
Definir a,b,c como entero
escribir "ingrese un numero "
Leer a
leer b
leer c
si a<=0 y b<=0 y c<=0 Entonces
escribir "error ingrese otro numero "
Sino
si a<b y b<c Entonces
mayor<-c
sino
mayor<-b
FinSi
si a<c Entonces
mayor <-c
sino
mayor<-a
FinSi
finsi
Escribir "el numero mayor es ", mayor
FinProceso
Proceso mayor_2numeros
Leer a
Leer b
Si a>b Entonces
mayor<-a
Sino
mayor<-b
FinSi
Promedio Categoria
20-17 A
>14 B
12-14 C
<12 D
Solucion:
Proceso promedio
prom<-(n1+n2+n3-menor)/2
FinProceso
Proceso pago_seguro
// 1.- Definir variables
Definir tipo como Caracter
Definir maxA, maxB, maxC, maxD, Adi_Per como Entero
Definir pA, pB, pC, pD, ad_AB, ad_CD, Pago_Anual, Pago_Adicional como Real
// 2.- Asignar Constantes
maxA<-8
maxB<-6
maxC<-4
maxD<-2
pA<-40
pB<-30
pC<-20
pD<-10
ad_AB<-8
ad_CD<-5
// 3.- Entrada: Leer datos
Escribir "Ingrese el Nro de Personas para asegurarlos: "
Leer n
Escribir "Ingrese el tipo A/B/C/D: "
Leer tipo
// 4.- Proceso: Realizar calculos
Si tipo='A' Entonces
Adi_Per <- n-maxA
Si Adi_Per<=0 Entonces
Pago_Anual <- pA
Sino
Pago_Adicional <- Adi_Per * ad_AB
Pago_Anual <- pA + Pago_Adicional
FinSi
FinSi
Si tipo='B' Entonces
Adi_Per <- n-maxB
Si Adi_Per<=0 Entonces
Pago_Anual <- pB
Sino
Pago_Adicional <- Adi_Per * ad_AB
Pago_Anual <- pB + Pago_Adicional
FinSi
FinSi
Si tipo='C' Entonces
Adi_Per <- n-maxC
Si Adi_Per<=0 Entonces
Pago_Anual <- pC
Sino
Pago_Adicional <- Adi_Per * ad_CD
Pago_Anual <- pC + Pago_Adicional
FinSi
FinSi
Si tipo='D' Entonces
Adi_Per <- n-maxD
Si Adi_Per<=0 Entonces
Pago_Anual <- pD
Sino
Pago_Adicional <- Adi_Per * ad_CD
Pago_Anual <- pD + Pago_Adicional
FinSi
FinSi
FinProceso
Proceso Codigo_empresa_2
Escribir "Ingrese un numero entero de 4 cifras: "
Leer n
d1<-trunc(n/1000)
n<-n MOD 1000
d23<-trunc(n/10)
n<-n MOD 10
d4<-trunc(n/1)
Si d1=1 Entonces
ec<-"Soltero"
Sino
Si d1=2 Entonces
ec<-"Casado"
Sino
Si d1=3 Entonces
ec<-"Viudo"
Sino
ec<-"Divorciado"
FinSi
FinSi
FinSi
Si d4=1 Entonces
s<-"Femenino"
Sino
s<-"Masculino"
FinSi
Proceso mayor_3numeros
Leer a, b, c
Si a>b Y a>c Entonces
ma<-a
Sino
Si b>a Y b>c Entonces
ma<-b
Sino
ma<-c
FinSi
FinSi
Escribir "El mayor es: ", ma
FinProceso
Proceso Cuatro_Operaciones_1
Definir s, r, m, d, n1, n2, opc como Real
Escribir "Ingrese 1er Numero: "
Leer n1
Escribir "Ingrese 2do Numero: "
Leer n2
// Menu Principal
Escribir "M E N U P R I N C I P A L"
Escribir "=========================="
Escribir "(1) Sumar"
Escribir "(2) Restar"
Escribir "(3) Multiplicar"
Escribir "(4) Dividir"
Escribir " "
Escribir "Seleccione una opcin (1-4): "
Leer opc
FinProceso
Algoritmo contar_ceros
Definir n, total como Entero
Definir masDatos como Caracter
Escribir "Cuenta de ceros leidos del teclado: "
masDatos <- 'S'
total <- 0
Mientras (masDatos = 'S') O (masDatos = 's') Hacer
Leer n
Si (n=0) Entonces
total<-total+1
FinSi
Escribir "Desea ingresar mas numeros S/N: "
Leer masDatos
Fin Mientras
Escribir "Total de ceros = " , total
FinAlgoritmo
Algoritmo intercambio_valores
Escribir "Ingrese el valor de A: "
Leer A
Escribir "Ingrese el valor de B: "
Leer B
Escribir "Ingrese el valor de C: "
Leer C
AUX<-A
A<-C
C<-B
B<-AUX
Algoritmo bisiesto
FinAlgoritmo
Proceso la serie de n terminos
Escribir "Ingrese el nro de trminos de la serie; "
Leer n
i<- 1 // indica que es el 1er trmino de la serie
suma1<-0
suma2<-0
a<-3
b<-1
Mientras i<=n Hacer
Si (i MOD 2)=0 Entonces
suma1<-suma1-1/(a*a)
a<-a+4
FinSi
Si (i MOD 2)<>0
Entonces
suma2<- suma2 + 1/(b*b)
b<-b+4
FinSi
i<-i+1
FinMientras
suma<-suma1 + suma2
Escribir "La suma es; ", suma
FinProceso
1. Supongamos que se lee por teclado una secuencia de nmeros, tales como:
5 3 0 2 4 4 0 0 2 3 6 0 2
Contar e imprimir el nmero de ceros de la secuencia.
Solucin.-
Algoritmo contar_ceros
Definir n, total como Entero
Definir masDatos como Caracter
Escribir "Cuenta de ceros leidos del teclado: "
masDatos <- 'S'
total <- 0
Mientras (masDatos = 'S') O (masDatos = 's') Hacer
Leer n
Si (n=0) Entonces
total<-total+1
FinSi
Escribir "Desea ingresar mas numeros S/N: "
Leer masDatos
Fin Mientras
Escribir "Total de ceros =" , total
FinAlgoritmo
B toma el valor de A
C toma el valor de B
A toma el valor de C
INSTRUCCIN A B C AUX
(1)
(2)
(3)
Solucin.-
Utilizaremos una variable auxiliar AUX.
Las instrucciones que resuelven el problema de intercambio son:
AUX A
AC
CB
B AUX
INSTRUCCIN A B C AUX
(1) A <- 5 5 -- -- --
(2) B <- 10 -- 10 -- --
(3) C <- 15 -- -- 15 --
AUX <- A 5 10 15 5
A <- C 15 10 15 5
C <- B 15 10 10 5
B <- AUX 15 5 10 5
Algoritmo intercambio_valores
Escribir "Ingrese el valor de A: "
Leer A
Escribir "Ingrese el valor de B: "
Leer B
Escribir "Ingrese el valor de C: "
Leer C
AUX<-A
A<-C
C<-B
B<-AUX
FinAlgoritmo
3. Utilizar la estructura condicional para averiguar si un ao ledo por teclado, es o
no bisiesto.
Solucin.-
Algoritmo bisiesto
FinAlgoritmo
4. Una compaa de Seguros ofrece planes anuales para una familia segn la
siguiente tabla:
Solucin.-
Anlisis:
TIPO MAX PER PAGO ADICIONAL
A 8 40 8
B 6 30 8
C 4 20 5
D 2 10 5
Algoritmo pago_seguro
// 1.- Definir variables
Definir tipo como Caracter
Definir maxA, maxB, maxC, maxD, Adi_Per como Entero
Definir pA, pB, pC, pD, ad_AB, ad_CD, Pago_Anual, Pago_Adicional como Real
// 2.- Asignar Constantes
maxA<-8
maxB<-6
maxC<-4
maxD<-2
pA<-40
pB<-30
pC<-20
pD<-10
ad_AB<-8
ad_CD<-5
// 3.- Entrada: Leer datos
Escribir "Ingrese el Nro de Personas para asegurarlos: "
Leer n
Escribir "Ingrese el tipo A/B/C/D: "
Leer tipo
// 4.- Proceso: Realizar calculos
Si tipo='A' Entonces
Adi_Per <- n-maxA
Si Adi_Per<=0 Entonces
Pago_Anual <- pA
Sino
Pago_Adicional <- Adi_Per * ad_AB
Pago_Anual <- pA + Pago_Adicional
FinSi
FinSi
Si tipo='B' Entonces
Adi_Per <- n-maxB
Si Adi_Per<=0 Entonces
Pago_Anual <- pB
Sino
Pago_Adicional <- Adi_Per * ad_AB
Pago_Anual <- pB + Pago_Adicional
FinSi
FinSi
Si tipo='C' Entonces
Adi_Per <- n-maxC
Si Adi_Per<=0 Entonces
Pago_Anual <- pC
Sino
Pago_Adicional <- Adi_Per * ad_CD
Pago_Anual <- pC + Pago_Adicional
FinSi
FinSi
Si tipo='D' Entonces
Adi_Per <- n-maxD
Si Adi_Per<=0 Entonces
Pago_Anual <- pD
Sino
Pago_Adicional <- Adi_Per * ad_CD
Pago_Anual <- pD + Pago_Adicional
FinSi
FinSi
FinAlgoritmo
Solucin.-
Anlisis:
Se tiene que descomponer el nmero y el producto en cifras. Para lo cual ser en:
Decena de millar, millar, centena, decena y unidad. Vea los siguientes cuadros:
N= 3247
dm1 0
m1 3
c1 2
d1 4
u1 7
PRODUCTO = 35717
dm2 3
m2 5
c2 7
d2 1
u2 7
REGLA RESULTADO
u2 = u1 7=7
d2 = u1 + d1 1=4+7
c2 = d1 + c1 7=4+2
m2 = c1 + m1 5=2+3
dm2 = m1 + dm1 3=3+0
Algoritmo numero_por_11
Leer n
// Descomponiendo el numero
m1 <- trunc(n/1000)
c1 <- trunc(n/100)
d1 <- trunc(n/10)
n <- n MOD 10
u1 <- trunc(n/1)
p<-n*11
// Descomponiendo el producto
m2 <- trunc(p/1000)
c2 <- trunc(p/100)
d2 <- trunc(p/10)
p <- p MOD 10
u2 <- trunc(p/1)
// Regla
u2 <- u1
d2 <- u1 + d1
c2 <- d1 + c1
m2 <- c1 + m1
// Generamos el producto
FinAlgoritmo
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 prximo juego se proporcionan como
sigue:
1 2 3 4 5
El algoritmo deber pedir repetidas veces, que seleccionemos una localidad, para
ingresar los valores del precio y cantidad para dicha localidad.
El algoritmo sera el siguiente:
Algoritmo localidad_entradas
tCant1<-0
tCant2<-0
tCant3<-0
tCant4<-0
tCant5<-0
tv1<-0
tv2<-0
tv3<-0
tv4<-0
tv5<-0
Repetir
Escribir "Ingrese Localidad (1-5): "
Leer Lo
Segun Lo Hacer
1:
Escribir "Ingrese el precio de Localidad 1: "
Leer p1
Escribir "Ingrese Cantidad a comprar en Localidad 1: "
Leer Cant1
v1<-p1*Cant1
tCant1<-tCant1+Cant1
tv1<-tv1 + v1
2:
Escribir "Ingrese el precio de Localidad 2: "
Leer p2
Escribir "Ingrese Cantidad a comprar en Localidad 2: "
Leer Cant2
v2<-p2*Cant2
tCant2<-tCant2+Cant2
tv2<-tv2 + v2
3:
Escribir "Ingrese el precio de Localidad 3: "
Leer p3
Escribir "Ingrese Cantidad a comprar en Localidad 3: "
Leer Cant3
v3<-p3*Cant3
tCant3<-tCant3+Cant3
tv3<-tv3 + v3
4:
Escribir "Ingrese el precio de Localidad 4: "
Leer p4
Escribir "Ingrese Cantidad a comprar en Localidad 4: "
Leer Cant4
v4<-p4*Cant4
tCant4<-tCant4+Cant4
tv4<-tv4 + v4
5:
Escribir "Ingrese el precio de Localidad 5: "
Leer p5
Escribir "Ingrese Cantidad a comprar en Localidad 5: "
Leer Cant5
v5<-p5*Cant5
tCant5<-tCant5+Cant5
tv5<-tv5 + v5
De otro Modo:
Escribir "Opcion no valida"
FinSegun
Hasta que Lo=0
v<-tv1+tv2+tv3+tv4+tv5
c<-tCant1+tCant2+tCant3+tCant4+tCant5
FinAlgoritmo
7. Calcular el Factorial de un nmero con las estructuras:
Mientras, Repetir y Para.
Solucin:
a) Estructura Mientras:
Algoritmo factorial_mientras
f<-1
i<-1
Repetir
f<-f*i
i<-i+1
Hasta Que i>n
c) Estructura Para:
Algoritmo Factorial_Para
f<-1
Escribir "Ingrese un numero para calcular su Factorial: "
Leer n
Solucin:
Anlisis:
Algoritmo ciudad_mayor
Definir i, j, CMAYOR, CIUDAD Como Entero
// i es contador de provincias
// j es contador de ciudades
// CMAYOR es la ciudad de mayor poblacion
// CIUDAD es poblacin de la ciudad
i<-1
Mientras i <= 8 hacer
CMAYOR<-0
j<-1
Mientras j<=25 hacer
Leer CIUDAD
Si CIUDAD>CMAYOR Entonces
CMAYOR<-CIUDAD
FinSi
j <- j + 1
FinMientras
Escribir "La ciudad mayor es: ", CMAYOR
i <- i + 1
FinMientras
FinAlgoritmo
1.- Una compaa de Seguros ofrece planes anuales para sus asegurados segn la
siguiente tabla:
TIPO MAX PER PAGO
A 8 40
B 6 30
C 4 20
D 2 10
Adems, por cada persona adicional en la categora A y B, se cobra 8 soles. Y por cada
persona adicional en la categora C y D, cobra 5 soles ms. Calcular el pago anual del
seguro por una familia de n personas.
Proceso pago_seguro
// 1.- Definir variables
Definir tipo como Caracter
Definir maxA, maxB, maxC, maxD, Adi_Per como Entero
Definir pA, pB, pC, pD, ad_AB, ad_CD, Pago_Anual, Pago_Adicional como Real
// 2.- Asignar Constantes
maxA<-8
maxB<-6
maxC<-4
maxD<-2
pA<-40
pB<-30
pC<-20
pD<-10
ad_AB<-8
ad_CD<-5
// 3.- Entrada: Leer datos
Escribir "Ingrese el Nro de Personas para asegurarlos: "
Leer n
Escribir "Ingrese el tipo A/B/C/D: "
Leer tipo
// 4.- Proceso: Realizar calculos
Si tipo='A' Entonces
Adi_Per <- n-maxA
Si Adi_Per<=0 Entonces
Pago_Anual <- pA
Sino
Pago_Adicional <- Adi_Per * ad_AB
Pago_Anual <- pA + Pago_Adicional
FinSi
FinSi
Si tipo='B' Entonces
Adi_Per <- n-maxB
Si Adi_Per<=0 Entonces
Pago_Anual <- pB
Sino
Pago_Adicional <- Adi_Per * ad_AB
Pago_Anual <- pB + Pago_Adicional
FinSi
FinSi
Si tipo='C' Entonces
Adi_Per <- n-maxC
Si Adi_Per<=0 Entonces
Pago_Anual <- pC
Sino
Pago_Adicional <- Adi_Per * ad_CD
Pago_Anual <- pC + Pago_Adicional
FinSi
FinSi
Si tipo='D' Entonces
Adi_Per <- n-maxD
Si Adi_Per<=0 Entonces
Pago_Anual <- pD
Sino
Pago_Adicional <- Adi_Per * ad_CD
Pago_Anual <- pD + Pago_Adicional
FinSi
FinSi
FinProceso
Proceso DIA_SIGUIENTE
Definir dia, mes, ao como entero
Dia <- d
mes <- m
ao <- a
Escribir "Ingrese Fecha en el formato DD/MM/AAAA"
Escribir "Ingrese Dia"
Leer Dia
Escribir "Ingrese Mes"
Leer Mes
Escribir "Ingrese Ao"
Leer Ao
Segun Mes Hacer
Caso 1,3,5,7,8,10:
Si d=31 Entonces
Escribir "Si la Fecha ingresada es:",d,"/",m,"/",a
Escribir "El dia siguiente a la fecha ingresada
sera:1/",m+1,"/",a
Sino
Escribir "Si la Fecha ingresada es:",d,"/",m,"/",a
Escribir "El dia siguiente a la fecha ingresada sera:"
,d+1,"/",m,"/",a
FinSi
Caso 4,6,9,11:
Si d=30 Entonces
Escribir "Si la Fecha ingresada es:",d,"/",m,"/",a
Escribir "El dia siguiente a la fecha ingresada
sera:1/",m+1,"/",a
Sino
Escribir "Si la Fecha ingresada es:",d,"/",m,"/",a
Escribir "El dia siguiente a la fecha ingresada sera:"
,d+1,"/",m,"/",a
Finsi
Caso 2:
Si a/4=0 Entonces
Si d=28 Entonces
Escribir "Si la Fecha ingresada es: ",d, "/", m ,"/",a
Escribir "El dia siguiente a la fecha ingresada
sera:1/",m+1,"/",a
Sino
Escribir "Si la Fecha ingresada es:",d,"/",m,"/",a
Escribir "El dia siguiente a la fecha ingresada
sera:",d+1,"/",m,"/",a
Finsi
Sino
Si d=29 Entonces
Escribir "Si la Fecha ingresada es:",d,"/",m,"/",a
Escribir "El dia siguiente a la fecha ingresada
sera:1/",m+1,"/",a
Sino
Escribir "Si la Fecha ingresada es:",d,"/",m,"/",a
Escribir "El dia siguiente a la fecha ingresada sera:"
,d+1,"/",m,"/",a
FinSi
FinSi
Caso 12:
Si d=31 Entonces
Escribir "Si la Fecha ingresada es:",d,"/",m,"/",a
Escribir "El dia siguiente a la fecha ingresada sera:1/",1,"/",a+1
Sino
Escribir "Si la Fecha ingresada es:",d,"/",m,"/",a
Escribir "El dia siguiente a la fecha ingresada sera:"
,d+1,"/",m,"/",a
FinSi
FinSegun
Finproceso
DETERMINAR LA CANTIDAD DE DINERO QUE RECIBA UN TRABAJADOR POR
CONCEPTO DE LAS HORAS EXTRAS TRABAJADAS EN UNA EMPRESA, SABIENDO
QUE CUANDO LAS HORAS DE TRABAJO EXCEDAN DE 40, EL RESTO SE
CONSIDERAN HORAS EXTRAS Y QUE ESTAS SE PAGAN AL DOBLE DE UNA HORA
NORMAL CUANDO NO EXCEDEN DE 8; SI LAS HORAS EXTRAS EXCEDEN DE 8 SE
PAGAN LAS PRIMERAS 8 AL DOBLE DE LO QUE SE PAGAN LAS HORAS NORMALES
Y EL RESTO AL TRIPLE
Proceso horas_extras
definir ht,tp,pph,he como entero
horasextras <- he
horastrabajadas <-ht
precioporhora <- pph
precioextra <- pe
Escribir 'introducir horas trabajadas: ';
Leer ht;
Escribir 'escribir precios por horas: ';
Leer pph;
Si ht<- 40 Entonces
tp<-ht*pph;
sino
he<- ht-40;
si he<=8 Entonces
pe<- he*pph*2
Sino
pd<- 8*pph*2;
pt<-(he-8)*pph*3;
pe<- pd+pe;
FinSi
tp<-40*(pph+pe)
FinSi
Escribir "su pago es:" tp
FinProceso
Proceso descuentos
definir tc como entero
definir dc como real
definir cb como caracter
totalcompra <- tc
colordebolita <- cb
descuento<- d
blanca <- b
verde <-v
amarilla <-a
azul<- az
bd<- 0
vd<-0.10
ad<-0.25
azd<-0.50
Escribir "total de compra: "
Leer tc
Escribir "escribir color del bolita:"
leer cb
si cb= ' b ' entonces
d<- tc-bd;
Sino
si cb= ' v' Entonces
d<- tc-(tc*vd);
sino
si cb= 'a' Entonces
d<- tc-(tc*ad);
sino
si cb= 'az' Entonces
d<-tc-(tc*azd);
sino
d<- tc-tc;
FinSi
finsi
finsi
FinSi
Escribir "total a pagar:" d
FinProceso
Proceso notas
definir n1,n2,n3,n4,n5,n6 como entero
definir promedio como real
nota1<- n1
nota2<- n2
nota3<- n3
nota4<- n4
nota5<- n5
nota6<- n6
promedio<- prom
escribir "ingresar nota 1:"
leer nota1
escribir "ingresar nota 2:"
leer nota2
escribir "ingresar nota 3:"
leer nota3
escribir "ingresar nota 4:"
leer nota4
escribir "ingresar nota 5:"
leer nota5
escribir "ingresar nota 6:"
leer nota6
segun nota hacer
si (n1<n2 y n1<n3 y n1< n4 y n1<n5 y n1<n6) entonces
promedio<-(n2+n3+n4+n5+n6)/5 ;
escribir "el promedio es: ",prom;
Sino
si(n2<n1 y n2<n3 y n2< n4 y n2<n5 y n2<n6) entonces
promedio<-(n1+n3+n4+n5+n6)/5 ;
escribir "el promedio es: ",prom;
sino
si(n3<n1 y n3<n3 y n3<n4 y n3<n5 y n3<n6) entonces
promedio<-(n1+n2+n4+n5+n6)/5 ;
escribir "el promedio es: ",prom;
Sino
si(n4<n1 y n4<n2 y n4<n3 y n4<n5 y
n4<n6) entonces
promedio<-(n1+n2+n3+n5+n6)/5
;
escribir "el promedio es: ",prom;
Sino
si(n5<n1 y n5<n2 y n5<n3 y
n5<n4 y n5<n6) entonces
promedio<-
(n1+n2+n3+n4+n6)/5 ;
escribir "el promedio es:
",prom;
Sino
si(n6<n1 y n6<n2 y n6<n3 y
n6<n4 y n6<n5) entonces
promedio<-
(n1+n2+n3+n4+n5)/5 ;
escribir "el promedio es:
",prom;
Finsi
finsi
FinSi
finsi
FinSi
finsi
finsi
FinSegun
escribir "el promedio es:" promedio
fin proceso
FACULTAD DE INGENIERIA DE SISTEMAS Y
ELECTRONICA
1. Crear un algoritmo que permita realizar las operaciones matemticas bsicas, como
suma, resta, multiplicacin y divisin, tal como lo hara una calculadora. Se debe tomar
en cuenta que en el caso de la divisin el segundo nmero ingresado no puede ser
cero ya que nos dara una divisin irreal.
Solucin:
Proceso Prob_1
Definir bd Como Entero
Definir n1, n2, r Como Real
bd<-0
Escribir "Ingrese nro 1: "
Leer n1
Escribir "Ingrese nro 2: "
Leer n2
Escribir "Seleccione opcion + - * /: "
Leer op
Segun op Hacer
'+':
r<-n1+n2
'-':
r<-n1-n2
'*':
r<-n1*n2
'/':
Si n2<>0 Entonces
r<-n1/n2
Sino
Escribir "Division Irreal"
bd<-1
FinSi
De Otro Modo:
Escribir "Operador NO Valido"
FinSegun
Si bd=0 Entonces
Escribir "El Resultado es: ", r
FinSi
FinProceso
2. Disear un algoritmo que al ingresar un nmero entero que equivalga a un mes del ao,
indique cuantos das tiene dicho mes. Por ejemplo: al ingresar 1 que representa a Enero
debe mostrar 31 das, si ingresa 4 que representa Abril debe mostrar 30 das. Si el mes
de febrero pertenece a un ao bisiesto tendr 29 das de lo contrario solo 28. Un ao
bisiesto es mltiplo de 4.
3. Una empresa de carga brinda servicio a todo el continente americano, la tarifa que
cobra por cada tonelada se muestra en el siguiente cuadro:
Destinos ($/tonelada)
Medio de transporte Norte Sur Centro
Areo 30 25 20
Martimo 25 20 15
4. Una agencia de viajes cobra un inters a sus clientes sobre el costo del paquete
turstico de acuerdo a la siguiente informacin: destino y nmero de ciudades a visitar.
Los intereses sern aplicados segn el siguiente cuadro:
Destino
Nmero de ciudades
Nacional (%) Internacional (%)
13 3 5
48 4 6
9 ms 8 10
El algoritmo debe mostrar el monto de descuento, el monto del impuesto y el pago total
que har un determinado cliente.
El cliente solo puede financiar una compra hasta el mximo de 8 cuotas, en caso
contrario la venta no debe proceder. Calcular el monto que debe pagar en una cuota.
Bsico 1000
Familiar 1600
Premium 2500
Si el socio desea adquirir adicionalmente un seguro contra accidentes, tiene que pagar
4% ms sobre el pago anual. Calcular el pago adicional y el monto final que tiene que
pagar un socio.
9. La empresa Cruz del Sur realiza ofertas de pasajes a 3 destinos diferentes, slo de
acuerdo a la cantidad de pasajes que se compra, como se muestra en el siguiente
cuadro:
Un cliente solo puede comprar pasajes para una ciudad. Mostrar el monto de descuento
y el total que tiene que pagar un determinado cliente.
10. Calcular el pago bsico que se hace por un servicio de transporte de carga
interprovincial. La empresa que brinda este servicio solo tiene tres destinos cuya tarifa
es por kilo transportado:
A (agencia agencia) 0
B (agencia domicilio) 25
C (domicilio domicilio) 45
Proceso Prob_2_primeraforma
Definir a, m Como Entero
Escribir "Ingrese el Ao: "
Leer a
Escribir "Ingrese el Nro de Mes: "
Leer m
Segun m Hacer
1:
Escribir "31 dias"
2:
Si (a MOD 4 = 0) y ((a MOD 100 <> 0) O (a MOD 400 = 0)) Entonces
Escribir "29 dias"
Sino
Escribir "28 dias"
FinSi
3:
Escribir "31 dias"
4:
Escribir "30 dias"
5:
Escribir "31 dias"
6:
Escribir "30 dias"
7:
Escribir "31 dias"
8:
Escribir "30 dias"
9:
Escribir "30 dias"
10:
Escribir "31 dias"
11:
Escribir "30 dias"
12:
Escribir "31 dias"
De Otro Modo:
Escribir "Nro de Mes NO Valido"
FinSegun
FinProceso
Proceso Prob_3
p<-0
an<-30
as<-25
ac<-20
mn<-25
ms<-20
mc<-15
Escribir "Ingrese Nro de Toneladas: "
Leer t
Escribir "Seleccione Medio de Transporte (1-2): "
Leer op
Escribir "Ingrese el Destino (N/S/C)"
Leer d
Segun op Hacer
1:
Si d='N' Entonces
p<-an*t
Sino
Si d='S' Entonces
p<-as*t
Sino
p<-ac*t
FinSi
FinSi
2:
Si d='N' Entonces
p<-mn*t
Sino
Si d='S' Entonces
p<-ms*t
Sino
p<-mc*t
FinSi
FinSi
De Otro Modo:
Escribir "Opcion NO Valida"
FinSegun
Escribir "El pago total es: ", p
FinProceso
Proceso Prob_5_Corregido
cf<-0
i<-0
d<-0
td1<-0.03
td2<-0.05
td3<-0.10
ti1<-0.15
ti2<-0.30
Escribir "Ingrese el rubro (1-2): "
Leer r
Escribir "Ingrese el monto de la compra: "
Leer c
Segun r Hacer
1:
Si c<100 Entonces
d<-0
Sino
Si c>=100 Y c<=250 Entonces
d<-td1*c
Sino
Si c>250 Y c<=500 Entonces
d<-td2*c
Sino
d<-td3*c
FinSi
FinSi
FinSi
cf<-c-d
i<-cf*ti1
2:
Si c<100 Entonces
d<-0
Sino
Si c>=100 Y c<=250 Entonces
d<-td1*c
Sino
Si c>250 Y c<=500 Entonces
d<-td2*c
Sino
d<-td3*c
FinSi
FinSi
FinSi
cf<-c-d
i<-cf*ti2
De Otro Modo:
Escribir "Opcion NO Valida"
FinSegun
total<-cf+i
Escribir "Descuento es: ", d
Escribir "Impuesto es: ", i
Escribir "Total a pagar es: ", total
FinProceso
Proceso Prob_6
desc<-0
sf<-0.15
sd<-0.10
pf<-0.10
pd<-0.05
Escribir "Ingrese el Precio: "
Leer precio
Escribir ""
Escribir "TIPO DE ALGODON"
Escribir "---------------"
Escribir "(1) Simple"
Escribir "(2) Pima"
Escribir "Seleccione tipo de algodon (1-2): "
Leer op
Escribir ""
Escribir "TIPO DE PRENDA"
Escribir "---------------"
Escribir "(F) Formal"
Escribir "(D) Deportiva"
Escribir "Seleccione tipo de prenda (F/D): "
Leer tp
Segun op Hacer
1:
Si tp="F" Entonces
desc<-sf*precio
FinSi
Si tp="D" Entonces
desc<-sd*precio
FinSi
2:
Si tp="F" Entonces
desc<-pf*precio
FinSi
Si tp="D" Entonces
desc<-pd*precio
FinSi
De Otro Modo:
Escribir "Opcion NO Valida"
FinSegun
total<-precio-desc
Escribir "El total a pagar es: ", total
FinProceso
Proceso Prob_7
Escribir "Ingrese el valor de la Compra: "
Leer compra
Escribir "Ingresar Nro de Cuotas: "
Leer n
Escribir ""
Escribir "TIPO DE TARJETA"
Escribir "---------------"
Escribir "(1) Visa"
Escribir "(2) Premiun"
Escribir "(3) Electron"
Leer op
cm<-compra/n
Segun op Hacer
1:
Si n<=8 Entonces
i<-0.05*cm
Sino
Escribir "Compra no procede"
FinSi
2:
Si n<=8 Entonces
i<-0.03*cm
Sino
Escribir "Compra no procede"
FinSi
3:
Si n<=8 Entonces
i<-0.01*cm
Sino
Escribir "Compra no procede"
FinSi
De Otro Modo:
Escribir "Opcion No Valida"
FinSegun
pagar<-cm+i
Escribir "La cuota mensual a pagar es: ", pagar
FinProceso
Proceso Prob_8_sinconstantes
pa<-0
Escribir "Seleccione el Plan (1-3): "
Leer p
Escribir "Desea Un Seguro contra accidentes (S/N): "
Leer resp
Segun p Hacer
1:
Si resp='S' Entonces
pa<-1000*0.04
final<-1000+pa
Sino
final<-1000
FinSi
2:
Si resp='S' Entonces
pa<-1600*0.04
final<-1600+pa
Sino
final<-1600
FinSi
3:
Si resp='S' Entonces
pa<-2500*0.04
final<-2500+pa
Sino
final<-2500
FinSi
De Otro Modo:
Escribir "Opcion NO Valida"
FinSegun
Escribir "Pago adicional es: ", pa
Escribir "Monto final a pagar es: ", final
FinProceso
Proceso Prob_8_CONconstantes
Definir resp Como Caracter
Definir p Como Entero
Definir pa, bp, fp, pp, porc, final Como Real
pa<-0
bp<-1000
fp<-1600
pp<-2500
porc<-0.04
Escribir "Seleccione el Plan (1-3): "
Leer p
Escribir "Desea Un Seguro contra accidentes (S/N): "
Leer resp
Segun p Hacer
1:
Si resp='S' Entonces
pa<-bp*porc
final<-bp+pa
Sino
final<-bp
FinSi
2:
Si resp='S' Entonces
pa<-fp*porc
final<-fp+pa
Sino
final<-fp
FinSi
3:
Si resp='S' Entonces
pa<-pp*porc
final<-pp+pa
Sino
final<-pp
FinSi
De Otro Modo:
Escribir "Opcion NO Valida"
FinSegun
Escribir "Pago adicional es: ", pa
Escribir "Monto final a pagar es: ", final
FinProceso
Proceso Prob_10_CONconstantes
Definir peso, pb, i, final Como Real
Definir d Como Entero
Definir m Como Caracter
t<-15
j<-20
ch<-10
ai<-0
bi<-0.25
ci<-0.45
Escribir "Ingrese el Peso en Kg.: "
Leer peso
Escribir "Seleccione el destino (1-3): "
Leer d
Escribir "Elija la modalidad (A/B/C): "
Leer m
Segun d Hacer
1:
pb<-t*peso
Si m='A' Entonces
i<-ai
FinSi
Si m='B' Entonces
i<-bi*pb
FinSi
Si m='C' Entonces
i<-ci*pb
FinSi
2:
pb<-j*peso
Si m='A' Entonces
i<-ai
FinSi
Si m='B' Entonces
i<-bi*pb
FinSi
Si m='C' Entonces
i<-ci*pb
FinSi
3:
pb<-ch*peso
Si m='A' Entonces
i<-ai
FinSi
Si m='B' Entonces
i<-bi*pb
FinSi
Si m='C' Entonces
i<-ci*pb
FinSi
De Otro Modo:
Escribir "Opcion No Valida"
FinSegun
final<-pb+i
Escribir "Pago final es: ", final
FinProceso