Está en la página 1de 10

EJERCICIOS RESUELTOS CON PSEUDO-CODIGO

1) Calcular la suma de los N primeros términos de una


progresión aritmética, dada por el valor de su primer término y
la diferencia entre 2 términos consecutivos cualesquiera (Leer
número de términos, primer término y la razón).

Solución: La solución se planteara en 2 fases, de la siguiente manera:

i) ANALISIS DEL PROBLEMA


Leyendo el problema, debemos poder hallar a partir de esta lectura aquellos
elementos que nos pueden servir para el diseño del programa y estos serian:
✓ La primera parte de la lectura nos dice que son N términos, por ejemplo si
N es 10, debemos tener 10 términos. Es decir, que se necesitara una
estructura repetitiva Para t=1, N.
✓ Pero antes debemos saber cuánto es N, por lo que otro elemento es Leer
N.
✓ También se menciona un primer término, el cual se deberá pedir al inicio,
es decir el elemento necesitado puede ser Leer P
✓ En una progresión aritmética, la diferencia entre 2 términos consecutivos
cualesquiera se llama razón. Por lo tanto otro elemento encontrado seria
Leer R
✓ La suma de la razón al primer término nos da el segundo termino y la suma
de esta razón al segundo término nos da el tercero y así sucesivamente.
Esto nos lleva a pensar en una especie de acumulador de la forma P  P
+ R y P generaría todos los términos, uno a la vez.
✓ Se pide por ultimo la sumatoria de todos los términos, lo cual se
conseguiría con el acumulador S  S + P
✓ Por último debemos indicar el resultado final y el elemento correspondiente
por lo tanto se Mostraría S, con S que contiene la suma total.
✓ El orden correspondiente seria, los Leer antes que el Para, dentro el Para el
generador de términos y el acumulador y saliendo del Para, mostrar el
resultado final. También el valor inicial del acumulador va antes que él
Para.

ii) DISEÑO DEL PROGRAMA

Con los elementos hallados durante el análisis del problema, podemos


diseñar el siguiente programa:

INICIO
Leer N //número de términos
Leer P //primer término
Leer R //diferencia entre dos términos (razón)
S←0
Para C = 1, N
S ←S + P // acumulamos un término generado a la vez
P ←P+ R // generamos el siguiente termino, uno a la vez
finPara
Mostrar “La suma de la progresión es:”,S
FIN

2)Determinar cuántas cifras (dígitos) posee un número entero


positivo introducido por teclado. Ejm. 12347 tiene 5 cifras.

iii) Solución: ANALISIS DEL PROBLEMA

Leyendo el problema, debemos poder hallar a partir de esta lectura


aquellos elementos que nos pueden servir para el diseño del programa
y estos serian:
✓ Si queremos saber cuántas cifras tiene un numero, primero
debemos obtener el numero, por lo que el primer elemento seria
Leer N
✓ Una forma de contar los dígitos de un numero, es eliminar un
digito a la vez del numero original, esto nos lleva al elemento
asignación N  N div 10, cuyo resultado es eliminar el ultimo
digito (de la derecha).
✓ Lo anterior debe ir acompañado de un contador ya que por cada
digito eliminado se debe incrementar el contador. Luego el
elemento seria C  C + 1.
✓ Se deben repetir los últimos 2 elementos (eliminar digito y
contar), hasta que ya no hayan mas dígitos que eliminar. Esto
nos indica que se requiere un elemento repetición. No puede ser
un elemento Para ya que no sabemos cuántas veces debemos
repetir y esto nos lleva a un Mientras. Luego el elemento es
Mientras (N >0) donde la condición es N > 0 porque si se
cumple esta condición aun hay dígitos por eliminar.
✓ Si ya no hay dígitos por eliminar ya terminamos de contar, luego
ya tenemos el resultado en el contador y solo falta que
mostremos el valor que está contenido en el. El elemento seria
Mostrar C.
✓ El orden correspondiente seria, Leer el numero y el valor inicial
del contador antes que el Mientras, dentro el Mientras el
eliminador de dígitos y el contador y saliendo del Mientras,
mostrar el resultado final (el contador).

iv) DISEÑO DEL PROGRAMA


Con los elementos hallados durante el análisis del problema, podemos
diseñar el siguiente programa:

INICIO
Leer N //número Leído, se supone entero positivo
C ←0
Mientras (N>0)
N ←N DIV 10 // truncamos el dígito menos significativo
C ←C + 1
finMientras
Mostrar “El número ”, N,”tiene”, C, ”cifras”
FIN

3)Obtener el cambio optimo (mínimo de monedas posible) de una


cantidad positiva en monedas de 5, 2, 1, 0.50, 0.20 y 0.10 Bs. Ejm.
para una cantidad 9.70, el cambio optimo sería: 1 de 5, 2 de 2, 1 de
0.50 y 2 de 0.10.

Primera Solución:

INICIO
Leer CANT //cantidad leida
C5←0: C2←0: C1←0: CC←0: CD←0: CU←0 //los contadores
Mientras (CANT>5)
CANT←CANT - 5
C5←C5 + 1
finMientras
Mientras (CANT > 2)
CANT←CANT - 2
C2←C2 + 1
finMientras
Mientras (CANT > 1)
CANT←CANT -1
C1←C1 + 1
finMientras
Mientras (CANT > 0.5)
CANT←CANT –0.5
CC←CC + 1
finMientras
Mientras (CANT > 0.2)
CANT←CANT –0.2
CD←CD + 1
finMientras
Mientras (CANT > 0.1)
CANT←CANT –0.1
CU←CU + 0.1
finMientras
Mostrar “El cambio optimo es: ”,C5,“monedas de 5”,
C2,“monedas de 2”,C1, “monedas de 1”,
CC,“monedas de 0.5”,CD,“monedas de 0.2”,CU,“de 0.1”
FIN

Segunda Solución:

INICIO
Leer N
C5 ←0 : C2←0 : C1←0 : CC←0 : CD←0 : CU←0
Si(N > 5)
entonces C5 ←NDIV 5 : N ←NMOD 5
finSi
Si(N > 2)
entonces C2 ←NDIV 2 : N ←NMOD 2
finSi

Si(N > 1)
entonces C1 ←NDIV 1 : N ←NMOD 1
finSi
Si(N > 0.5)
entonces CC ←NDIV 0.5 : N ←NMOD 0.5
finSi
Si(N > 0.2)
entonces CD ←NDIV 0.2 : N ←NMOD 0.2
finSi
Si(N > 0.1)
entoncesCU←NDIV 0.1 : N ←NMOD 0.1
finSi
Mostrar “El cambio es: ”,C5, “de 5”,C2, “de 2”,C1,“de 1”,
CC, “de 0.5”,CD,“de 0.2”,CU, “de 0.1”
FIN

4)Desarrollar un programa que encuentre los números perfectos


menores a 1000.

INICIO
Para N=1,1000 // generamos el rango de enteros de 1 a 1000
S←0
Para q=1, N/2 //solo es necesario hasta la mitad (N/2)
Si (N MOD k = 0)
entonces S←S + k
finSi
finPara
Si S = N //si es que es perfecto
Entonces Mostrar N
finSi
finPara
FIN

5)Un depósito contiene N litros de vino. De él se extrae un litro y se


añade un litro de agua. De la mezcla se vuelve a sacar un litro,
añadiendo otro de agua. Calcular el mínimo de veces que habrá que
repetir esta operación para que el depósito contenga más agua que
vino, indicando en cada paso la composición de la mezcla.

INICIO
Leer N //la cantidad inicial leida del vino
C ←0 : V ←N // V representa el vino
A ←0 //A representa el agua
Mientras (V > = A)
C ←C + 1
V ←V –V /N : Mostrar “Hay”, V, “litros de vino”
A ←A –A /N + 1 : Mostrar “Hay”, A, “litros de agua”
finMientras
Mostrar “El proceso se repetirá:”,C,”veces”
“Al final quedara,”,V,”litros de vino y ”,A,”litros de agua”
FIN

7)Desarrolle un programa que calcule el número de veces que aparecen


el entero mayor y menor respectivamente, de una serie de números
enteros introducidos por teclado. La entrada de números enteros
termina cuando se introduce el cero.

Primera Solución:

INICIO
Leer n // leemos el primer numero
may←n : c1 ←0 : c2 ←0 : me ←n
Hacer // INICIO del bloque de repetición
Si n>may
entoncesmay←n : c1 ←1
sino
Si n = may
Entonces c1 ←c1 + 1
finSi
finSi
Si n<me
Entonces me ←n : c2 ←1
Sino
Si n = me
Entonces c2 ←c2 + 1
finSi
finSi
Leer n // leemos el siguiente numero
Mientras (n ≠ 0) // FIN del bloque de repetición
Mostrar “El numero mayor fue: ”, may, “se repitió ”, c1, “veces”,
“El numero menor fue: ”, me, “se repitió”, c2, “veces”
FIN

Segunda Solución:

INICIO
Leer n
may←n: c1 ←0: c2 ←0 me←n
Mientras (n ≠0) // INICIO del bloque de repetición
Leer n
Si n>may
Entonces may←n : c1 ←1
Sino
Si n = may
Entonces c1 ←c1 + 1
finSi
finSi
Si n<me
Entonces me ←n : c2 ←1
Sino
Si n = me
Entonces c2 ←c2 + 1
finSi
finSi
FinMientras // FIN del bloque de repetición
Mostrar “El numero mayor fue:”, may, “se repitio”, c1, “veces”,
“El numero menor fue:”, me, “se repitio”, c2, “veces”
FIN

8)Desarrolle un programa que liste los números primos menores o igual


que un entero dado N.
INICIO
Leer N // N es el límite superior
Para k=N, 2, -1 // Buscaremos desde N hacia abajo (decrementando)
c←0
Para q=1, k // generamos los posibles divisores
Si (k MOD q = 0)
Entonces c←c + 1
finSi
finPara
Si c = 2 // si cumple, encontramos un numero PRIMO
Entonces Mostrar k
finSi
finPara
FIN

9)Desarrolle un programa que liste los X primeros números defectivos.


N >=2 es defectivo si la suma de sus divisores, incluido el 1 y excluido
el, es menor que N.

INICIO
Leer X // Suponemos entero y positivo
t←0 : N←1// N es el generador de números enteros
Mientras ( t< X)
N←N + 1: S←0 // probaremos para los N, a partir del 1
Para d=1, N-1
Si (N MOD d = 0)
Entonces S ←S + d
finSi
finPara
Si S <N // si cumple esta condición, es DEFECTIVO
Entonces Mostrar N : t ←t +1
// mostramos y contamos los defectivos
finSi
finMientras
FIN

10)Desarrolle un programa que calcule los múltiplos comunes de 3 y 13


menores que 1000 y mayores que 100.
INICIO
Para n=100,1000
Si (n MOD 3 = 0) Λ(n MOD 13 = 0)
Entonces Mostrar n
finSi
finPara
FIN

11)Programa que lea un número entero y lo escriba invertido (Ejm. si se


lee 139, el programa debe producir y luego mostrar 931).

INICIO
Leer n
ni←0 // el numero invertido
Mientras (n > 0)
r←n MOD 10 // r contiene el resto de la división de n por 10
n←n DIV 10 // n trunca el digito de su derecha
ni←ni*10 + r // componemos el nuevo numero
finMientras
Mostrar n, “invertido es: ”, ni
FIN

12) Desarrolle un programa que calcule el menor número primo mayor o


igual que un número N, introducido por teclado (N es un entero >= 2)

INICIO
Leer N : b←0 // N es el limite inferior para la búsqueda
Mientras (b==0)
c←0
Para d=1, N
Si (N MOD d = 0)
Entonces c←c + 1
finSi
finPara
Si c = 2 //si cumple, lo encontramos
Entonces
Mostrar N
b←1 // lo encontramos y salimos del Mientras
Sino N ← N + 1
// si no lo encontramos, proseguiremos con el sigte.
finSi
finMientras
FIN
13)Programa que halle todos los pares de primos gemelos comprendidos
entre 100 y 500, M y N son primos gemelos si ambos son primos y se
diferencian en 2. Ejm. 11 y 13.

INICIO
m←0 : n←0
Para k=100,500 // el intervalo de busqueda
c←0
// en el intervalo 2 a k/2, k no tiene divisores si es nro.primo
Para d=2, k/2 // en este intervalo, c debe mantenerse en 0
Si (k MOD d = 0)
Entonces c←c + 1
finSi
finPara
Si c = 0 // k es primo y su primo gemelo puede ser k+2
Entonces // luego,vemos si su primo gemelo es (k+2)
z←0 : q←k+2 // q puede ser el primo gemelo de k
Para d=2, q/2
Si (q MOD d = 0)
Entonces z←z + 1
finSi
finPara
Si z = 0 //q es primo y es el primo gemelo buscado
Entonces Mostrar “Son primos gemelos: ”, k, q
finSi
finSi
finPara
FIN

14)En un observatorio meteorológico se registra cada día la siguiente


información: temperatura a las 12 de la mañana (medio día) y a las 12
de la noche. Desarrolle un programa que calcule el número de días,
durante un mes, que tengan una temperatura a las 12 de la mañana
superior a los 20 grados y número de días cuya temperatura sea inferior
a 15 grados a medianoche.

INICIO
cs←0 : ci←0
Para d=1,31
Leer tmd // tmdes temperatura a medio día
Leer tmn // tmnes temperatura a media noche
Si (tmd>20) // temp.de medio dia mayor a 20 grados ???
Entonces cs←cs + 1
finSi
Si (tmn< 15 // temp. media noche inferior a 15 grados ???
Entonces ci←ci + 1
finSi
finPara
Mostrar cs, “días de temperatura mayor a 20°”
Mostrar ci, “días de temperatura menor a 15°”
FIN

15)Programa que calcule las raíces del sistema de ecuaciones:

a1x + b1y + c1= 0


a2x + b2y + c2= 0

Por los métodos de: sustitución y reducción

1ra.Solución (sustitución)

INICIO
Leer a1,a2,b1,b2,c1,c2 // los coeficientes de las 2 ecuaciones
y←-(a1*c1 –c1*a2)/(b1*a2 –b2*a1)
x←-(b1*y + c1)/ a1
Mostrar “x = ”,x,”; y =”,y
FIN

2da. Solución (reducción)

INICIO
Leer a1,a2,b1,b2,c1,c2
y←-(a2*a1*c1 –c2*a1)/(b1*a1 –a2*a1*b1)
x← -(b1*y + c1)/ a1
Mostrar “x = ”,x,”; y =”,y
FIN

También podría gustarte