Está en la página 1de 24

SOLUCIONARIO A

EJERCICIOS DE
PROGRAMACION I

ELABORADO POR:
CARLOS AVILES GALEAS

1. Realice la Prueba de escritorio para el siguiente programa con

Elaborado por: Carlos Avilés Gáleas 20131014046


𝑛 = 347, 1455, 2781
Algoritmo nbilletes
Escribir "Ingrese la Cantidad de dinero, n";
Leer n
Si n>=100 Entonces
nb100<-n/100-(n%100)/100
n<-n-nb100*100
FinSi

Si n>=50
nb50<-n/50-(n%50)/50
n<-n-nb50*50

FinSi
Si n>=20
nb20<-n/20-(n%20)/20
n<-n-nb20*20
FinSi
Si n>=10
nb10<-n/10-(n%10)/10
n<-n-nb10*10
FinSi
Si n>=5
nb5<-n/5-(n%5)/5
n<-n-nb5*5
FinSi
si n>=1
nb1<-n
FinSi
Escribir nb100, "billetes de 100"
Escribir nb50, "billetes de 50"
Escribir nb20, "billetes de 20"
Escribir nb10, "billetes de 10"
Escribir nb5, "billetes de 5"
Escribir nb1, "billetes de 1"
FinAlgoritmo

Elaborado por: Carlos Avilés Gáleas 20131014046


Solución
 RAM 𝒏 = 𝟑𝟒𝟕

n nb100 nb50 nb20 nb10 nb5 nb1


𝟑𝟒𝟕 3 0 2 0 1 2
𝟒𝟕
𝟕
𝟐

 PROCESO
1. Si 347 >= 100 (V)
nb100 = 347/100 − (347%100)/100 ⟹ 3
n = 347 − 3 ∗ 100 ⟹ 47
2. Si 47 >= 50 (F)
3. Si 47 >= 20 (V)
nb20 = 47/20 − (47%20)/20 ⟹ 2
n = 47 − 2 ∗ 20 ⟹ 7
4. Si 7 >= 10 (F)
5. Si 7 >= 5 (V)
nb5 = 7/5 − (7%5)/5 ⟹ 1
n=7−1∗5⟹2
6. Si 2 >= 1 (V)
nb1 = 2

 PANTALLA

Elaborado por: Carlos Avilés Gáleas 20131014046


 RAM 𝒏 = 𝟏𝟒𝟓𝟓

n nb100 nb50 nb20 nb10 nb5 nb1


𝟏𝟒𝟓𝟓 14 1 0 0 1 0
𝟓𝟓
𝟓
𝟎

 PROCESO
1. Si 1455 >= 100 (V)
nb100 = 1455/100 − (1455%100)/100 ⟹ 14
n = 1455 − 14 ∗ 100 ⟹ 55
2. Si 55 >= 50 (V)
nb50 = 55/50 − (55%50)/50 ⟹ 1
n = 55 − 1 ∗ 50 ⟹ 5
3. Si 5 >= 20 (F)
4. Si 5 >= 10 (F)
5. Si 5 >= 5 (V)
nb5 = 5/5 − (5%5)/5 ⟹ 1
n=5−1∗5⟹0
6. Si 0 >= 1 (F)

 PANTALLA

Elaborado por: Carlos Avilés Gáleas 20131014046


 RAM 𝒏 = 𝟐𝟕𝟖𝟏

n nb100 nb50 nb20 nb10 nb5 nb1


𝟐𝟕𝟖𝟏 27 1 1 1 0 1
𝟖𝟏
𝟑𝟏
𝟏𝟏
1
 PROCESO
1. Si 2781 >= 100 (V)
nb100 = 2781/100 − (2781%100)/100 ⟹ 27
n = 2781 − 27 ∗ 100 ⟹ 81
2. Si 81 >= 50 (V)
nb50 = 81/50 − (81%50)/50 ⟹ 1
n = 81 − 1 ∗ 50 ⟹ 31
3. Si 31 >= 20 (V)
nb20 = 31/20 − (31%20)/20 ⟹ 1
n = 31 − 1 ∗ 20 ⟹ 11
4. Si 11 >= 10 (V)
nb10 = 11/10 − (11%10)/10 ⟹ 1
n = 11 − 1 ∗ 10 ⟹ 1
5. Si 1 >= 5 (F)
6. Si 1 >= 1 (V)
nb1 = 1

 PANTALLA

Elaborado por: Carlos Avilés Gáleas 20131014046


2. Se requiere determinar cuál de tres cantidades proporcionadas es la menor. Realizar
su respectivo algoritmo y representarlo mediante un diagrama de flujo y un
seudocódigo.

 VARIABLES
DICCIONARIO DESCRIPCION
A Primer numero
B Segundo numero
C Tercer numero
m La cantidad menor

 ALGORITMO

Algoritmo cantidad_menor
Escribir " Ingrese el primer número: "
Leer A
Escribir " Ingrese el segundo número: "
Leer B
Escribir " Ingrese el tercer número: "
Leer C
Si A < B Entonces
Si A < C Entonces
m = A
Sino
m = C
Fin Si
Sino
Si B < C Entonces
m = B
Sino
m = C
Fin Si
Fin Si
Escribir " El menor es:", m
FinAlgoritmo

Elaborado por: Carlos Avilés Gáleas 20131014046


 DIAGRAMA DE FLUJO

Elaborado por: Carlos Avilés Gáleas 20131014046


3. Construya una prueba de escritorio para el siguiente Seudocódigo
Algoritmo NumDias
Escribir "Ingrese Un Año"
Leer a
Escribir "Ingrese Un Mes"
Leer m
Si m=1 o m=3 o m=5 o m=7 o m=8 o m=10 o m=12 Entonces
Escribir "El mes tiene 31 días"
Sino
Si m=4 o m=6 o m=9 o m=11 Entonces
Escribir "El mes tiene 30 días"
Sino
Si m=2 Entonces
Si(a%4=0) y (a%100!=0) y (a%400!=0) Entonces
Escribir "El mes tiene 29 días"
Sino
Escribir "El mes tiene 28 días"
FinSi
FinSi
FinSi
FinSi
FinAlgoritmo

Elaborado por: Carlos Avilés Gáleas 20131014046


 RAM

a m
𝟐𝟎𝟏𝟐 2

 PROCESO

1. ⏟
2=1 o ⏟
2=3 o ⏟
2=5 o ⏟
2=7 o⏟
2=8 o ⏟
2 = 10 o ⏟
2 = 12
F F F F F F F

2. ⏟
2=4 o ⏟
2=6 o ⏟
2 = 9 o⏟
2 = 11
F F F F

3. ⏟
2=2
V

 Si(2012%4
⏟ = 0) y ⏟
(2012%100! = 0) y ⏟
(2012%400! = 0) Entonces
0=0 (V) 12≠0 (V) 12≠0 (V)

Escribir "El mes tiene 29 días

 PANTALLA

Elaborado por: Carlos Avilés Gáleas 20131014046


 RAM
a m
𝟐𝟎𝟏𝟕 5

 PROCESO

1. 𝐒𝐢 5⏟= 1 𝐨 ⏟ 5 = 5 𝐨 ⋯ Entonces
5=3 𝐨⏟
F F V
Escribir "El mes tiene 31 días"

 PANTALLA

 RAM

a m
𝟐𝟎𝟏𝟓 9

 PROCESO

1. ⏟
9=1 ∨ ⏟
9=3 ∨ ⏟
9=5 ∨ ⏟
9=7 ∨⏟
9=8 ∨ ⏟
9 = 10 ∨ ⏟
9 = 12
F F F F F F F

2. 9=4 o∨ ⏟
⏟ 9=6 ∨ ⏟
9 = 9 o⋯
F F V

Escribir "El mes tiene 30 días"

Elaborado por: Carlos Avilés Gáleas 20131014046


4. “El náufrago satisfecho” ofrece hamburguesas sencillas, dobles y triples, las cuales tienen un costo de
$20.00, $25.00 y $28.00 respectivamente. La empresa acepta tarjetas de crédito con un cargo de 5 % sobre
la compra. Suponiendo que los clientes adquieren sólo un tipo de hamburguesa, realice un algoritmo para
determinar cuánto debe pagar una persona por N hamburguesas. Represéntelo mediante diagrama de flujo,
y pseudocódigo.

 DIAGRAMA DE FLUJO

Elaborado por: Carlos Avilés Gáleas 20131014046


 ALGORITMO
Algoritmo N_HAMBURGUESAS
Escribir "Que tipo de hamburguesa desea?";
Leer tipo; // puede ser 1, 2 o 3.
Escribir "Cuantas desea?";
Leer cant; // puede ser n cantidad.

Si (tipo = 1) Entonces
pagar<-(cant*20)+((cant*20)*0.05);
Escribir "Su total a pagar es: ", pagar;
Sino Si (tipo = 2) Entonces
pagar<-(cant*25)+((cant*25)*0.05);
Escribir "Su total a pagar es: ", pagar;

Sino Si (tipo = 3) Entonces


pagar<-(cant*28)+((cant*28)*0.05);
Escribir "Su total a pagar es: ", pagar;
Sino
Escribir "Ingrese un tipo de hamburguesa valido";
FinSi
FinSi
FinSi

FinAlgoritmo

Elaborado por: Carlos Avilés Gáleas 20131014046


5. “Fábricas “El cometa” produce artículos con claves (1, 2, 3, 4, 5 y 6). Se requiere un algoritmo para
calcular los precios de venta, para esto hay que considerar lo siguiente:
Costo de producción = materia prima + mano de obra + gastos de fabricación.
Precio de venta = costo de producción + 45 % de costo de producción.
El costo de la mano de obra se obtiene de la siguiente forma: para los productos con clave 3 o 4 se
carga 75 % del costo de la materia prima; para los que tienen clave 1 y 5 se carga 80 %, y para los
que tienen clave 2 o 6, 85 %.
Para calcular el gasto de fabricación se considera que si el artículo que se va a producir tiene claves
2 o 5, este gasto representa 30 % sobre el costo de la materia prima; si las claves son 3 o 6,
representa 35 %; si las claves son 1 o 4, representa 28 %. La materia prima tiene el mismo costo
para cualquier clave.
Represente mediante el diagrama de flujo y el pseudocódigo.

 ALGORITMO
Algoritmo EL_COMETA
Escribir "Introduzca una clave: ";
Leer clave; // puede ser: 1, 2, 3, 4,5 o 6
Escribir "Introduzca el costo de la materia prima: ";
Leer MATPRIMA

Si (clave = 3) o (clave = 4) Entonces


MOBRA = MATPRIMA * 0.75
Sino Si (clave = 1) o (clave = 5) Entonces
MOBRA= MATPRIMA * 0.80
Sino
MOBRA = MATPRIMA * 0.85
FinSi
Si (clave = 2) o (clave = 5) Entonces
GASTOFABRICACION = MATPRIMA * 0.30
Sino
Si (clave = 3) o (clave = 6) Entonces
GASTOFABRICACION = MATPRIMA * 0.35
sino
GASTOFABRICACION= MATPRIMA * 0.28
FinSi
FinSi

CPRODUCCION = MATPRIMA + MOBRA + GASTOFABRICACION


PRECIOVENTA = CPRODUCCION + CPRODUCCION * 0.45
Escribir "El costo de producción es ", "Lps. ", CPRODUCCION
Escribir "El precio de venta es ", "Lps. ", PRECIOVENTA
FinSi
FinAlgoritmo

Elaborado por: Carlos Avilés Gáleas 20131014046


 DIAGRAMA DE FLUJO

Elaborado por: Carlos Avilés Gáleas 20131014046


6. El banco “Bandido de peluche” desea calcular para uno de sus clientes el saldo actual, el pago
mínimo y el pago para no generar intereses. Los datos que se conocen son: saldo anterior del
cliente, monto de las compras que realizó y el pago que depositó en el corte anterior. Para calcular
el pago mínimo se debe considerar 15% del saldo actual, y para no generar intereses corresponde
85% del saldo actual, considerando que este saldo debe incluir 12% de los intereses causados por
no realizar el pago mínimo y $200 por multa por el mismo motivo. Realice el algoritmo
correspondiente y represéntelo mediante el diagrama de flujo y pseudocódigo.

 ALGORITMO
Algoritmo Bandido_de_peluche
Escribir "Ingrese el valor de monto de las compras:";
Leer monto_de_las_compras;
Escribir "Ingrese el valor de pago del corte actual:";
Leer pago_del_corte_actual;
Escribir "Ingrese el valor de pago del corte anterior:";
Leer pago_del_corte_anterior;
Escribir "Ingrese el valor de saldo anterior:";
Leer saldo_anterior;
saldo_actual <- monto_de_las_compras-saldo_anterior-
pago_del_corte_anterior;
Si saldo_actual>0 Entonces
pago_mínimo <- saldo_actual*0.15;
SiNo
pago_mínimo <- 0;
FinSi
Si saldo_actual>0 Entonces
pago_para_no_generar_intereses <- saldo_actual*0.85;
SiNo
pago_para_no_generar_intereses <- 0;
FinSi
Si pago_del_corte_actual<pago_para_no_generar_intereses
Entonces
intereses <- saldo_actual*0.12+200;
SiNo
intereses <- 0;
FinSi
Escribir "Valor de intereses: ", intereses;
Escribir "Valor de pago mínimo: ", pago_mínimo;
Escribir "Valor de pago para no generar intereses: ",
pago_para_no_generar_intereses;
Escribir "Valor de saldo actual: ", saldo_actual;
FinAlgoritmo

Elaborado por: Carlos Avilés Gáleas 20131014046


 DIAGRAMA DE FLUJO

Elaborado por: Carlos Avilés Gáleas 20131014046


7. El Se requiere un algoritmo para determinar cuánto ahorrará una persona en un año, si al final de
cada mes deposita variables cantidades de dinero; además, se requiere saber cuánto lleva
ahorrado cada mes. Realice el diagrama de flujo, el pseudocódigo

 ALGORITMO

Algoritmo AHORRO_AÑO
AHORROMES = 0
MES = 1
Mientras AHORROMES <=12
Escribir "Ingrese la cantidad que ahorrará: "
Leer Cantidad
AHORROMES = AHORROMES +Cantidad
MES = Mes + 1
Escribir "El ahorro del mes: ", MES, "es",
AHORROMES
FinMientras
Escribir "El ahorro final es:", AHORROMES
FinAlgoritmo

Elaborado por: Carlos Avilés Gáleas 20131014046


 DIAGRAMA DE FLUJO

Elaborado por: Carlos Avilés Gáleas 20131014046


8. Realice un algoritmo para generar N elementos de la sucesión de Fibonacci
(0, 1, 1, 2, 3, 5, 8, 13,…). Realice el diagrama de flujo, el pseudocódigo

 ALGORITMO
Algoritmo Sucesión_de_Fibonacci
Escribir "INGRESE UN NUMERO";
Leer N// Números de elementos de la serie
A<-0 // Valor inicial
B<-1 //Valor inicial
Escribir A
Escribir B
M = 1//Contador Ciclo
Mientras M <= (N - 2)
C = A + B //C: Valor generado
Escribir C
A = B
B = C
M = M + 1
FinMientras
FinAlgoritmo

Elaborado por: Carlos Avilés Gáleas 20131014046


 DIAGRAMA DE FLUJO

Elaborado por: Carlos Avilés Gáleas 20131014046


9. Realice un algoritmo y represéntelo mediante un diagrama de flujo para obtener una función exponencial, la
cual está dada por:
𝑥 𝑥2 𝑥3 𝑥𝑛
𝑒𝑥 = 1 + + + + ⋯ +
1! 2! 3! 𝑛!
Utilizando N elementos de la sumatoria.

 ALGORITMO

Algoritmo FUNCION_EXPONENCIAL
Escribir "Escriba los Valores de X y de N: "
Leer x, N
i = 0
ex = 0
Mientras i<=N
factorial = 1
j=i
Mientras j > 0
factorial = factorial * j
j = k - 1
FinMientras
ex = ex + (x^2)/factorial
i=i+1
FinMientras
Escribir "La solución es: " , ex
FinAlgoritmo

Elaborado por: Carlos Avilés Gáleas 20131014046


 DIAGRAMA DE FLUJO

Elaborado por: Carlos Avilés Gáleas 20131014046


10. Una población de bacterias crece diariamente de acuerdo al siguiente patrón:
 Si existen menos de 700 bacterias, la población se triplica
 Si existen entre 700 y 6.000 bacterias, la población disminuye su tasa de crecimiento a un tercio del
existente cada día
 Si hay más de 6.000 y menos de 8.000, la población entra en crisis y empieza a decrecer a una tasa
de 1/32 diario
 Si hay más de 8.000, la población se estabiliza y crece a una tasa de 1/78 diario

 ALGORITMO
algoritmo poblacion_de_bacteria

// Inicializar variables
bacteria <- 0;
tasa_de_crecimiento <- 0;
dia <- 1;
dias <- 0;
i <- 0;

// Pedir datos al usuario


mientras (bacteria <= 0) hacer
escribir "Ingrese la población de bacterias";
leer bacteria;
si (bacteria <= 0) Entonces
escribir "Ingresa una cantidad de bacterias mayor a 0";
esperar tecla;
limpiar pantalla;
FinSi
finmientras

mientras (dias <= 0) hacer


escribir "Ingrese la cantidad de dias a analizar";
leer dias;
si (dias <= 0) Entonces
escribir "Ingresa una cantidad de dias mayor a 0";
esperar tecla;
limpiar pantalla;
FinSi
finmientras

limpiar pantalla;
para i<-1 hasta dias con paso 1 hacer
escribir "Día ", dia;
escribir "Bacterias al inicio del dia: ", bacteria;
si (bacteria < 700) entonces
tasa_de_crecimiento <- 3;
bacteria <- bacteria * tasa_de_crecimiento;
escribir "Las bacterias se triplicaron";
dia <- dia + 1;
sino
si (bacteria >= 700 Y bacteria <=6000) entonces
tasa_de_crecimiento <- 1/3;
escribir "La tasa de crecimiento disminuyo a ", (bacteria *
tasa_de_crecimiento), "(1/3) bacterias diarias";
bacteria <- bacteria + ( bacteria * tasa_de_crecimiento);
dia <- dia + 1;

Elaborado por: Carlos Avilés Gáleas 20131014046


sino
si(bacteria > 6000 Y bacteria < 8000) Entonces
tasa_de_crecimiento <- 1/32;
escribir "La población va a decrecer a una tasa de ",
tasa_de_crecimiento;
bacteria <- Bacteria - (bacteria * tasa_de_crecimiento);
dia <- dia + 1;
sino
si (bacteria > 8000) entonces
tasa_de_crecimiento <- 1/78;
escribir "La poblacion se estabilizó, y crecera a una
tasa de ", tasa_de_crecimiento;
bacteria <- bacteria + (bacteria *
tasa_de_crecimiento);
dia <- dia + 1;
finsi
finsi
finsi
finsi
escribir "Bacterias al final del día: ", bacteria;

escribir "";
finpara
finalgoritmo

 DIAGRAMA DE FLUJO

**Ver su diagrama resuelto en la carpeta del ejercicio ·10

Elaborado por: Carlos Avilés Gáleas 20131014046

También podría gustarte