Está en la página 1de 2

PRCTICA N 2

1. Leer un nmero entero (entre 0 y 32 700) e imprimir el nmero de cifras de dicho nmero.

cuenta_cifras()
inicio
entero A, n
leer A
si A > 0 y a < 32700 entonces
n 0
mientras A < > 0
A A \ 10
n n + 1
fin mientras
imprimir Nmero de cifras: , n
sino
imprimir Ingrese un nmero entre 0 y 32700
fin si
fin


A A > 0 y
A < 32700 ?
n A <> 0
?
Pantalla
21235 si 0 si
2123 1 si
212 2 si
21 3 si
2 4 si
0 5 si 5





2. Leer las horas trabajadas y la paga por hora para calcular el sueldo semanal de un empleado. Cuando las horas de trabajo
exceden de 40 se consideran horas extra; las primeras 8 se pagan al doble; si las horas extra exceden de 8 se pagan las
primeras 8 al doble de lo que se pagan las horas normales y el resto al triple.

sueldo_semanal()
inicio
entero h, p, s
leer h, p
si h > 40 entonces
si h > 48 entonces
s 40 * p + 8 * 2 * p + (h 48) *3* p
sino
s 40 * p + (h 40) * 2 * p
fin si
sino
s h * p
fin si
imprimir s
fin


h p h > 40 ? h > 48 ? s Pant
34 20 no - 34*20 = 680 680

h p h > 40 ? h > 48 ? s Pant
47 20 si no 40*20+7*2*20 = 1080 1080

h p h > 40 ? h > 48 ? s Pant
54 20 si si 40*20+8*2*20+6*3*20 = 1480 1480


3. Dados dos nmeros n y m, calcular el mximo comn divisor (mcd) y el mnimo comn mltiplo (mcm).

mcm_mcd()
inicio
entero n, m, i 2, mcm 1, mcd 1
leer n, m
i 2
mcm 1
mcd 1
mientras n <> 1 or m <> 1
si n mod i = 0 y m mod i = 0 entonces
mcd mcd * i
mcm mcm * i
n n \ i
m m \ i
sino si n mod i = 0 entonces
mcm mcm * i
n n \ i
sino si m mod i = 0 entonces
mcm mcm * i
m m\ i
sino
i i + 1
fin si
fin mientras
mcm mcm * n * m
imprimir mcm: , mcm
imprimir mcd: , mcd
fin

n m i n <> 1 y
m <> 1 ?
n mod i = 0 y
m mod i = 0 ?
n mod i = 0 ? m mod i = 0 ? mcm mcd Pantalla
12 18 2 si si - - 2 2
6 9 2 si no si - 4 2
3 9 2 si no - - 4 2
3 9 3 si si - - 12 6
1 3 3 no - - - 36 6 mcm:36
- - - - - - - - - mcd :6




4. Imprimir los trminos de la serie de Fibonacci hasta que rebase un valor n (entero y positivo) ledo por el teclado. En esta
serie los dos primeros nmeros son 1, y el resto se obtiene sumando los dos anteriores: 1, 1, 2, 3, 5, 8, 13, 21

serie_fibonacci()
inicio
entero n,
texto serie
leer n
a 1
b 1
serie 1, 1
mientras b <= n
b b + a
a b - a
serie serie, , , b
fin mientras
imprimir serie
fin

n a b serie b <= n ? Pantalla
15 1 1 1, 1 si
1 2 1, 1, 2 si
2 3 1, 1, 2, 3 si
3 5 1, 1, 2, 3, 5 si
5 8 1, 1, 2, 3, 5, 8 si
8 13 1, 1, 2, 3, 5, 8, 13 si
13 21 1, 1, 2, 3, 5, 8, 13, 21 no 1, 1, 2, 3, 5, 8, 13, 21






5. Dado un nmero positivo n, mostrar los nmeros primos que existen entre 1 y n, adems la suma de los mismos.

muestra_primos()
inicio
entero n
booleano esPrimo verdad
texto primos
leer n
si n <= 3 entonces
para i = 1 hasta n
primos primos, i
siguiente
sino
primos 1, 2, 3
para i = 4 hasta n
para j = 2 hasta i\2
si i mod j = 0 entonces
esPrimo Falso
terminar para
fin si
siguiente
si esPrimo entonces
primos primos, , , i
fin si
esPrimo verdadero
siguiente
fin si
imprimir primos
fin







n n<=3? primos i j i mod j=0? esPrimo esPrimo? pantalla
8 - - - - - verdad -
no 1, 2, 3 4 2 si falso falso
- - - - verdad -
- 5 2 no - verdad
1, 2, 3, 5 - - - verdad -
- 6 2 si falso falso
- - - - verdad -
- 7 2 no -
- - 3 no - verdad
1, 2, 3, 5, 7 - - - verdad -
- 8 2 si falso falso
- - - - verdad - 1, 2, 3, 5, 7







6. Dados los coeficientes a, b, c de la ecuacin de una recta , determinar los coeficientes d, e, f de la recta
que es perpendicular a la primera en el punto x1, y1, verificando previamente que este punto pertenece a la
primera recta.

recta_perpendicular()
inicio
real a, b, c, d, e, f, x1, y1
leer a, b, c, x1, y1
si a * x1 + b * y1 c = 0 entonces
d b/a
e -1
f d * x1 + y1
imprimir d, x + , e, y - , f, = 0
sino
imprimir el punto (x1, y1) no pertenece a la recta
fin si
fin

a b c X1 Y1 a * x1 + b * y1 c = 0 ? d e f pantalla
1 2 1 5 -4 (1*5)+(2*-4) -1 = 0 si 2 -1 2*5+(-4) 6 2x + -1y - 6 = 0