Está en la página 1de 34

CLS

INPUT "Ingrese un número: ", Num


Factorial = 1
DO
i=i+1
Factorial = Factorial * i
LOOP WHILE i < Num
'PRINT "Factorial= ", Factorial

Compendio de

ALGORITMOS
• Estructuras secuenciales
• Estructuras condicionales
• Estructuras de selección
• Estructuras repetitivas o bucles
• Arreglos

Abraham Sopla Maslucán


Escuela Profesional de Ingeniería de Sistemas
Universidad Nacional Toribio Rodríguez de Mendoza
Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

La presentación y disposición de:


COMPENDIO DE ALGORITMOS
Son propiedad del autor: Abraham Sopla Maslucán
Ingeniero de Sistemas – Universidad Nacional de Cajamarca, maestro en
Ciencias de la Computación, Instituto Tecnológico de Monterrey,
México. Doctorando en Ingeniería de Sistemas e Informática,
Universidad Nacional Mayor de San Marcos, Perú.
Profesor en la Escuela Profesional de Ingeniería de Sistemas, Universidad
Nacional Toribio Rodríguez de Mendoza.
abraham.sopla@untrm.edu.pe

Av. Los Rosales Cdra 6, Carretera al anexo de Taquia - Telf. 941986484


Chachapoyas – Perú

Este documento ha sido publicado bajo la licencia Creative Commons


Reconocimiento-No comercial-Compartir bajo la misma licencia 2.5 Perú.
Para ver una copia de dicha licencia, visite:
http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Segunda edición 2017

Abraham Sopla Maslucán 2|Página


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

A MANERA DE INTRODUCCIÓN

El presente compendio comprende la solución de los


ejercicios y problemas prácticos en pseudocódigo y lenguaje
Basic clásicos a lo largo de los trece años de experiencia como
docente universitario, los mismos que en su oportunidad han
sido consultados por los estudiantes de la Universidad y
algunos centros de estudios superiores al e-mail
abraham.sopla@untrm.edu.pe, otros han sido propuestos
como ejercicios en exámenes de graduación en el I. S. T. Perú
Japón, entre ellos están los más conocidos como: factorial,
serie Fibonacii, cambio de base de números, Mínimo Común
Múltiplo y Máximo Común Divisor, ordenación, entre otros.
Para cada solución se usa el lenguaje Basic, un lenguaje para
aprendices, quedando claro que los mismos se podrán
adecuar fácilmente a otros lenguajes de programación.
Por otro lado, se agradece seguir proponiendo la solución
de otros problemas para lenguajes como: C++, Pascal, Basic,
Java, Python, PHP, etc., También puede encontrar otros
algoritmos en pseudocódigo y programados en lenguaje
C++ en el texto electrónico “Algoritmos y Lenguaje C”. Para
probar los códigos de este compendio, basta copiarlos al
block de notas y guardarlos con la extensión .bas y
ejecutarlos desde el Basic. Finalmente sólo queda decir: “que
este esfuerzo sirva en algo”.

3|Página
Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

1. Programa que permite ingresar e imprimir cierta


cantidad de números y luego realizar la búsqueda de
cualquiera de ellos ingresados. Imprime el número y la
posición en donde se encuentra el número buscado.

DIM Numeros(100) AS INTEGER


INPUT "cuantos números va ingresar ", n
DO
INPUT "NÚMERO: ", num
IF num > 100 AND num < 500 THEN
i=i+1
Numeros(i) = num
END IF
LOOP WHILE i <= n

'IMPRIMIENDO LOS NÚMEROS


FOR i = 1 TO n
PRINT Numeros(i)
NEXT

'Busqueda
INPUT "dame un valor a buscar ", busca
FOR i = 1 TO n
IF busca = Numeros(i) THEN
PRINT "Posicion ", i, " Número: ", Numeros(i)
EXIT FOR
END IF
NEXT

4|Página
Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

2. Programa que permite ingresar ocho números y


realizar la búsqueda del mayor y menor imprimiendo
también su posición.

DIM Numeros(1 TO 8) AS INTEGER


FOR i = 1 TO 8
INPUT "NÚMERO : ", num
Numeros(i) = num
NEXT
'IMPRIMIENDO LOS NÚMEROS
FOR i = 1 TO 8
PRINT Numeros(i)
NEXT
'Busqueda del mayor
may = 0
men = 10000
FOR i = 1 TO 8
IF may < Numeros(i) THEN
may = Numeros(i)
PosMay = i
END IF
IF men > Numeros(i) THEN
men = Numeros(i)
PosMen = i
END IF
NEXT
PRINT "El mayor es: "; may, "Posición ", PosMay
PRINT "El Menor es: "; men, "Posición ", PosMen

Abraham Sopla Maslucán 5|Página


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

3. Programa que permite ingresar e imprimir cierta


cantidad de números mayores de 100 y menores de
500. Permite realizar la búsqueda de un número
cualquiera imprimiéndolo junto a su posición.

DIM Numeros(100) AS INTEGER


INPUT "cuantos números va ingresar ", n
DO
INPUT "NÚMERO : ", num
IF num > 100 AND num < 500 THEN
i=i+1
Numeros(i) = num
END IF
LOOP WHILE i <= n

'IMPRIMIENDO LOS NÚMEROS


FOR i = 1 TO n
PRINT Numeros(i)
NEXT

'Busqueda
INPUT "dame un valor a buscar ", busca
FOR i = 1 TO n
IF busca = Numeros(i) THEN
PRINT "Posicion ", i, " Número: ", Numeros(i)
EXIT FOR
END IF
NEXT

Abraham Sopla Maslucán 6|Página


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

4. Elaborar un algoritmo que permita ingresar 20


números y muestre todos los números ingresados
menores e iguales a 25.

DIM Numeros AS STRING


CLS
FOR i = 1 TO 20
INPUT "Número: ", Numero
IF Numero <= 25 THEN
Numeros = Numeros + ", " + STR$(Numero)
END IF
NEXT
PRINT "Números Menores o Iguales que 25: ", Numeros

5. Elaborar un algoritmo, que permita el ingreso de 10


números enteros. El programa debe sumar todos los
números que sean múltiplos de 3 e imprimirlo.
CLS
FOR i = 1 TO 10
INPUT "numero: ", Numero
IF Numero MOD 3 = 0 THEN
Suma = Suma + Numero
END IF
NEXT
PRINT "La suma es: ", Suma

Abraham Sopla Maslucán 7|Página


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

6. Diseñar un algoritmo que permita calcular los cinco


primeros números perfecto (un número es perfecto,
cuando la suma de sus divisores, sin incluirlo al número
es exactamente el mismo número). El 6 es un número
perfecto ya que sus divisores son 1,2 y 3 suman 6. La
solución hace que el computador tome un buen tiempo
para completar los 5 números.

CLS
Num = 5
C=0
DO WHILE C < 5
Num = Num + 1
Suma = 0
FOR i = 1 TO INT(Num / 2)
IF Num MOD i = 0 THEN
Suma = Suma + i
END IF
NEXT
IF Num = Suma THEN
C=C+1
PRINT "El Numero", Num
END IF
LOOP

Abraham Sopla Maslucán 8|Página


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

7. Hacer un programa que calcule el factorial de un


número ingresado por el teclado. Pudiendo ser
solucionado de varias formas.

Primera Forma
CLS
INPUT "Ingrese un numero: ", Num
Factorial = 1
DO
i=i+1
Factorial = Factorial * i
LOOP WHILE i < Num
'PRINT "Factorial= ", Factorial

Segunda Forma
CLS
INPUT "Ingrese un numero: ", Num
Factorial = 1
DO WHILE i < Num
i=i+1
Factorial = Factorial * i
LOOP
PRINT "Factorial= ", Factorial

Tercera Forma
CLS
INPUT "Ingrese un numero: ", Num
Factorial = 1
FOR i = 1 TO Num

Abraham Sopla Maslucán 9|Página


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

Factorial = Factorial * i
NEXT
PRINT "Factorial= ", Factorial

8. Escribir un algoritmo que determine si un año es


bisiesto. Teniendo en cuenta que un año es bisiesto si
es múltiplo de cuatro. Los años múltiplos de 100 no son
bisiestos, salvo si ellos son también múltiplos de 400.
CLS
INPUT "ingrese un numero: ", N
IF N MOD 4 <> 0 THEN
PRINT "El Año", N, "NO es bisiesto"
ELSE

IF N MOD 4 = 0 AND N MOD 400 <> 0 AND N MOD 100 =


0 THEN
PRINT "El Año", N, "NO es bisiesto"
END IF
IF N MOD 4 = 0 AND N MOD 400 = 0 AND N MOD 100 = 0
THEN
PRINT "El Año", N, "SI es bisiesto"
END IF
IF N MOD 4 = 0 AND N MOD 400 <> 0 AND N MOD 100 <>
0 THEN
PRINT "El Año"; N, "SI es bisiesto"
END IF
END IF

Abraham Sopla Maslucán 10 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

9. Hacer un programa que sume los números que son


múltiplos de 3, 5 y de 7 entre 100 y 300.

CLS
Num = 100
DO WHILE Num <= 300
Num = Num + 1
IF Num MOD 3 = 0 OR Num MOD 5 = 0 OR Num MOD 7 =
0 THEN
Acumulado = Acumulado + Num
END IF
LOOP
PRINT "Acumulado", Acumulado

10. Escribir la serie de Fibonacci de “n”. La serie es: 1, 1, 2,


3, 5, 8, 13, 21, 34… n elementos. Este problema se
puede resolver usando procesos recursivos, solución
que se encuentra en “Algoritmos y Leguaje C”

CLS
INPUT "Cantidad de Elementos de la Serie Fibonacii: ",
CaElementos
Con = 0
nAct = 1
nAnt = 1
DO WHILE (Con < CaElementos)
PRINT nAnt
nSig = nAnt + nAct
nAnt = nAct

Abraham Sopla Maslucán 11 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

nAct = nSig
Con = Con + 1
LOOP

11. Programa que suma los n primeros números naturales.

CLS
INPUT "Cantidad: ", N
FOR i = 0 TO N
suma = suma + i
NEXT
PRINT suma
12. Dada la duración (en minutos) en una llamada
telefónica. Calcular su costo de la siguiente manera:
✓ Hasta tres minutos el costo es de 0.50
✓ Arriba de tres minutos al costo hay que sumar 0.10 por
cada minuto adicional a los 3 primeros.

CLS
INPUT "Minutos: ", NM
IF NM <= 3 THEN
Costo = NM * .5
ELSE
Costo = 3 * .5 + (NM - 3) * (.6)
END IF
PRINT “Costo Total por la LLamada”, Costo

Abraham Sopla Maslucán 12 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

13. Hacer un programa para convertir un número natural


en romano. Solución adquirida de la página de
Microsoft, soporta la conversión hasta el año 3999.

DIM I AS INTEGER, Digit AS INTEGER, Temp AS STRING


CONST Digits = "IVXLCDM"
INPUT "Numero Narutal: ", N
I=1
Temp = ""
DO WHILE N > 0
Digit = N MOD 10
N = N \ 10
SELECT CASE Digit
CASE 1
Temp = MID$(Digits, I, 1) + Temp
CASE 2
Temp = MID$(Digits, I, 1) + MID$(Digits, I, 1) + Temp
CASE 3
Temp = MID$(Digits, I, 1) + MID$(Digits, I, 1) +
MID$(Digits, I, 1) + Temp
CASE 4
Temp = MID$(Digits, I, 2) + Temp
CASE 5
Temp = MID$(Digits, I + 1, 1) + Temp
CASE 6
Temp = MID$(Digits, I + 1, 1) + MID$(Digits, I, 1) +
Temp
CASE 7

Abraham Sopla Maslucán 13 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

Temp = MID$(Digits, I + 1, 1) + MID$(Digits, I, 1) +


MID$(Digits, I, 1) + Temp
CASE 8
Temp = MID$(Digits, I + 1, 1) + MID$(Digits, I, 1) +
MID$(Digits, I, 1) + MID$(Digits, I, 1) + Temp
CASE 9
Temp = MID$(Digits, I, 1) + MID$(Digits, I + 2, 1) +
Temp
END SELECT
I=I+2
LOOP
PRINT "Número en Romano", Temp

14. Dada una hora, por ejemplo, en horas, minutos, y hacer


un programa para calcular la hora en el siguiente
segundo.

CLS
INPUT "Hora: ", Hora
INPUT "Minuto: ", Minuto
INPUT "Segundo: ", Segundo
IF Segundo = 59 THEN
Segundo = 0
Minuto = Minuto + 1
IF Minuto = 60 THEN
Minuto = 0
Hora = Hora + 1
END IF
END IF

Abraham Sopla Maslucán 14 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

PRINT Hora, ":", Minuto, ":", Segundo

15. Hacer un programa para calcular el pago por un boleto


de viaje con la condición de que: si el recorrido supera
los 800 kilómetros o a su vez el número de días de
estadía es mayor a siete el descuento es del 3%, si el
pago por km recorrido es de 12.5 soles.
CLS
INPUT "Ingrese el Kilometraje: ", Kil
INPUT "Ingrese el Numero de Dias: ", NDE
IF Kil > 800 AND NDE > 7 THEN
Boleto= Kil * 12.5 - Kil * 12.5 * .03
ELSE
Boleto = Kil * 12.5
END IF
PRINT Boleto

16. Programa de la tabla de multiplicar descendente.

Primera Forma
CLS
FOR i = 12 TO 0 STEP -1
PRINT "2x", i, "="; 2 * i
NEXT

Segunda Forma
CLS
DO
PRINT "2x", i, "="; 2 * i
Abraham Sopla Maslucán 15 | P á g i n a
Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

i=i+1
LOOP WHILE i <= 12

Tercera Forma
CLS
DO WHILE i <= 12
PRINT "2x", i, "="; 2 * i
i=i+1
LOOP

Cuarta Forma
CLS
DO UNTIL i >= 13
PRINT "2x", i, "="; 2 * i
i=i+1
LOOP

17. Calcular el total de las ventas de cinco clientes en un


restaurante. Ante cualquier consumo que supere los 70
soles se hará un descuento del 5%. Imprima el monto
total consumido.

CLS
FOR i = 1 TO 5
INPUT "Pague: ", Consumo
PRINT "Pago por el Menú: ", Consumo
Total = Total + Consumo
IF Total > 70 THEN
Total = Total - Total * .05

Abraham Sopla Maslucán 16 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

END IF
NEXT
PRINT "Total a Pagar: ", Total

18. Hacer un programa que permita calcular el mínimo


común múltiplo de tres números.

DIM a, b, c, d, acum AS LONG


INPUT "Primer Número: ", a
INPUT "Segundo Número: ", b
INPUT "Tercer Número: ", c
d=2
acum = 1
WHILE ((a <> 1) OR (b <> 1) OR (c <> 1))
WHILE ((a MOD d = 0) OR (b MOD d = 0) OR (c MOD d = 0))
IF (a MOD d = 0) THEN
a=a/d
ELSE
a=a
END IF
IF (b MOD d = 0) THEN
b=b/d
ELSE
b=b
END IF
IF (c MOD d = 0) THEN
c=c/d
ELSE
c=c
Abraham Sopla Maslucán 17 | P á g i n a
Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

END IF
acum = acum * d
WEND
d=d+1
WEND
PRINT "Mínimo Común Múltiplo: ", acum

19. Hacer un programa que calcule el máximo común


divisor de tres números ingresados por el teclado.

DIM a, b, c, d, mcd AS LONG


INPUT "Primer N£mero: ", a
INPUT "Segundo N£mero: ", b
INPUT "Tercer N£mero: ", c
d=2
mcd = 1
r=0
IF ((a <> 1) AND (b <> 1) AND (c <> 1)) THEN
WHILE ((a MOD d = 0) AND (b MOD d = 0) AND (c MOD d =
0))
r=r+1
a=a/d
b=b/d
c=c/d
WEND
mcd = 2 ^ r
END IF
PRINT "Máximo Común Divisor: ", mcd

Abraham Sopla Maslucán 18 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

20. Dado un texto, escribir un programa que imprima la


cantidad de cada una de las vocales incluidas en el
texto.

DIM Tama AS INTEGER


DIM Texto AS STRING
CLS
INPUT "ESCRIBA UN TEXTO: ", Texto$
Texto$ = UCASE$(Texto)
Tama = LEN(Texto$)
FOR i = 1 TO Tama
IF MID$(Texto$, i, 1) = "A" THEN
va = va + 1
END IF
NEXT
FOR i = 1 TO Tama
IF MID$(Texto$, i, 1) = "E" THEN
ve = ve + 1
END IF
NEXT
FOR i = 1 TO Tama
IF MID$(Texto$, i, 1) = "I" THEN
vi = vi + 1
END IF
NEXT
FOR i = 1 TO Tama
IF MID$(Texto$, i, 1) = "O" THEN
vo = vo + 1
END IF

Abraham Sopla Maslucán 19 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

NEXT
FOR i = 1 TO Tama
IF MID$(Texto$, i, 1) = "U" THEN
vu = vu + 1
END IF
NEXT
PRINT "Vocales a: ", va
PRINT "Vocales e: ", ve
PRINT "Vocales i: ", vi
PRINT "Vocales o: ", vo
PRINT "Vocales u: ", vu

21. Hacer un programa que permita calcular todos los


números primos entre dos números ingresados por el
teclado.

DIM i, N1, N2, j AS INTEGER


INPUT "NÚMERO INFERIOR: ", N1
INPUT "NÚMERO SUPERIOR: ", N2
FOR i = N1 TO N2
j=2
DO WHILE i MOD j <> o
j=j+1
IF i = j THEN
PRINT " ", i
END IF
LOOP
NEXT

Abraham Sopla Maslucán 20 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

22. Escriba un programa que determine cuantas vocales,


consonantes y espacios en blanco existen en un texto.

DIM i AS INTEGER
DIM Textito, Captura AS STRING
INPUT "INGRESE EL TEXTO: ", Textito$
Textito$ = UCASE$(Textito$)
FOR i = 1 TO LEN(Textito$)
Captura$ = MID$(Textito$, i, 1)
SELECT CASE Captura
CASE IS = "A": vocal = vocal + 1
CASE IS = "E": vocal = vocal + 1
CASE IS = "I": vocal = vocal + 1
CASE IS = "O": vocal = vocal + 1
CASE IS = "U": vocal = vocal + 1
END SELECT
IF MID$(Textito$, i, 1) = " " THEN
blanco = blanco + 1
END IF
NEXT
PRINT "Vocales: "; vocal
PRINT "Espacios en blanco: ", blanco
PRINT "Consonantes: ", LEN(Textito$) - (vocal + blanco)

23. Hacer un programa que pase un número natural


menor de 9 a un número de otra base.

DIM p, A, B, j AS LONG
DIM Vec1(9) AS INTEGER

Abraham Sopla Maslucán 21 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

INPUT "NUMERO MAYOR DE 2 Y MENOR DE 10: ", A


INPUT "NUMERO BASE: ", B
i=0
IF ((A >= 2) AND (A <= 10)) THEN
DO WHILE (A > 0)
i=i+1
Vec1(i) = A MOD B
A=A\B
LOOP
j=i
END IF
FOR p = j TO 1 STEP -1
PRINT STR$(Vec1(p))
NEXT

24. Escribir un programa que imprima los números del 1 al


10, cada uno de ellos con su respectivo factorial.

FOR i = o TO 10
IF i = 0 OR i = 1 THEN
f=1
ELSE
f=f*i
END IF
PRINT "Factorial" + STR$(i) + "==>" + STR$(f)
NEXT

Abraham Sopla Maslucán 22 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

25. Escriba un programa que permita ingresar un número


n entero positivo mayor o igual que 10 y menor o igual
que 50; luego imprima los múltiplos menores que 1000
así como sus divisores respectivos.

DIM Vec1(1000), Vec2(1000) AS DOUBLE


CLS
INPUT "INGRESE UN NUMERO MAYOR A 10 Y MENOR A 50: ",
Numero
IF Numero >= 10 AND Numero <= 50 THEN
j=1
a=1
DO
a = Numero * j
PRINT a
j=j+1
LOOP WHILE a < 1000

FOR i = 1 TO Numero 'para hallar los divisores


IF Numero MOD i = 0 THEN
PRINT "Divisores: ", i
END IF
NEXT
END IF

26. Escribir un programa que ordene ascendentemente 10


números ingresados por el teclado.

DIM Vec1(10) AS DOUBLE

Abraham Sopla Maslucán 23 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

CLS
TAM = 10
FOR I = 1 TO 10
INPUT "Ingrese Número: ", Num
Vec1(I) = Num
NEXT
FOR I = 1 TO TAM - 1
FOR j = 1 TO TAM - 1
IF Vec1(j) > Vec1(j + 1) THEN
temp = Vec1(j)
Vec1(j) = Vec1(j + 1)
Vec1(j + 1) = temp
END IF
NEXT
NEXT
FOR I = 1 TO 10
PRINT "Número: ", I, Vec1(I)
NEXT

27. Escribir un programa que ordene descendentemente


10 números ingresados por el teclado.

DIM Vec2(10) AS DOUBLE


CLS
Tam = 10
FOR i = 1 TO 10
INPUT "Ingrese un N£mero: ", Num
Vec2(i) = Num
NEXT
FOR i = 1 TO Tam - 1
Abraham Sopla Maslucán 24 | P á g i n a
Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

FOR j = 1 TO Tam - 1
IF Vec2(j) < Vec2(j + 1) THEN
temp = Vec2(j)
Vec2(j) = Vec2(j + 1)
Vec2(j + 1) = temp
END IF
NEXT
NEXT
PRINT "==ORDENACIÓN DESCENDENTE=="
FOR i = 1 TO 10
PRINT "Numero", Vec2(i)
NEXT

28. Escribir un programa que permita pasar un número


natural cualquiera a binario.

DIM Num, Cuo, Res AS INTEGER


DIM NN AS STRING
CLS
INPUT "INGRESE UN NUMERO NATURAL: ", Num
DO
Res = Num MOD 2
Cuo = Num \ 2
Num = Cuo
NN$ = NN$ + STR$(Res)
LOOP WHILE Num > 0
FOR i = LEN(NN$) TO 1 STEP -1
a$ = a$ + MID$(NN$, i, 1)
NEXT
PRINT "Numero", a$
Abraham Sopla Maslucán 25 | P á g i n a
Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

29. Escribir un programa que permita pasar un número


binario cualquiera a un número natural.

DIM NB AS STRING
CLS
INPUT "DAME UN NÚMERO BINARIO; ", NB$
T = LEN(NB$)
NUMERO = 0
FOR i = 1 TO T
NUMERO = NUMERO + VAL(MID$(NB$, i, 1)) * 2 ^ (T - i)
NEXT
PRINT NUMERO

30. Hacer un programa que invierta un texto ingresado por


el teclado.

DIM NB, TextoI AS STRING


CLS
INPUT "ESCRIBA UN TEXTO; ", NB$
LT = LEN(NB$)
FOR i = LT TO 1 STEP -1
TextoI$ = TextoI$ + MID$(NB$, i, 1)
NEXT
PRINT TextoI$

31. Hacer un programa que muestre los múltiplos de 5


comprendidos entre 200 y 300. Iniciar el contador en
200.

Abraham Sopla Maslucán 26 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

CLS
x = 200
DO WHILE x <= 300
PRINT x
x=x+5
LOOP

32. Calcular el acumulado de las edades de un grupo de N


personas siempre y cuando dichas edades sean
mayores a 18 y no pasen de 45.

CLS
INPUT "cantidad de personas: ", n
x=1
DO WHILE x < n
INPUT "EDAD; ", E
IF E > 18 AND E <= 45 THEN
SUMA = SUMA + E
END IF
x=x+1
LOOP
PRINT "ACUMULADO ES: ", SUMA

33. Programa que calcula el promedio de las edades


menores a 20 y mayores a 55 de un grupo de N
personas.

CLS
INPUT "cantidad de personas: ", N

Abraham Sopla Maslucán 27 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

x=0
DO WHILE x < N
INPUT "EDAD; ", E
IF E < 20 OR E > 55 THEN
SUMA = SUMA + E
END IF
x=x+1
LOOP
PRINT "PROMEDIO ES: "; SUMA / N

34. Hacer en programa que muestre los números pares


entre 1000 y 0. No se escribirá los números que se
encuentren en el rango de 200 A 50.

CLS
X = 1000
DO WHILE X > 0
X=X-2
IF X > 50 AND X > 200 THEN
PRINT X
END IF
LOOP

35. Hacer un programa que en cada vuelta vaya


mostrando los acumulados de los números pares ente
1000 y 0 pero no escribirá los números cuando el
contador se encuentra entre el rango de 200 a 50.

CLS

Abraham Sopla Maslucán 28 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

X = 1000
DO WHILE X > 0
X=X-2
IF X > 50 AND X > 200 THEN
SUMA = SUMA + X
PRINT X, SUMA
END IF
LOOP

36. Dados n números, hacer un programa que determine la


suma de los que sean mayores a cero, el producto de
los menores que cero y se cuenten cuantos números
son iguales a cero.

CLS
INPUT "CANTIDAD DE NÚMEROS: ", C
X=0
P=1
S=0
DO WHILE X < C
X=X+1
INPUT "NUMERO: ", N
IF N = 0 THEN
CE = CE + 1
ELSE
IF N > 0 THEN
S=S+N
ELSE
P=P*N

Abraham Sopla Maslucán 29 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

END IF
END IF
LOOP
PRINT CE, S, P

37. Si ingresamos los valores de los lados (a, b, c) de 35


triángulos. Calcular cuántas áreas son pares, cuántas
impares, cuántas no se pudieron calcular por no existir
el Triángulo.

CLS
X=0
P=1
S=0
DO WHILE X <= 35
X=X+1
INPUT "LADO A: ", A
INPUT "LADO B: ", B
INPUT "LADO C: ", C

IF A + B > C AND B + C > A AND A + C > B THEN


S = (A + B + C) / 2
AREA = S * SQR((S - A) * (S - B) * (S - C))
IF AREA MOD 2 = 0 THEN
SAP = SAP + 1
ELSE
SAI = SAI + 1
END IF

Abraham Sopla Maslucán 30 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

ELSE
ANC = ANC + 1
END IF
LOOP
PRINT "AREAS PARES", SAP
PRINT "AREAS IMPARES", SAI
PRINT "AREAS NO SE PUEDEN CALCULAR", ANC

38. En el ejercicio anterior se desea conocer cuál fue el


triángulo de mayor área.

CLS
X=0
P=1
S=0
MAYOR = 50000
DO WHILE X <= 35
X=X+1
PRINT "OTRA AREA"
PRINT “================================="
INPUT "LADO A: ", A
INPUT "LADO B: ", B
INPUT "LADO C: ", C

IF A + B > C AND B + C > A AND A + C > B THEN


S = (A + B + C) / 2
AREA = S * SQR((S - A) * (S - B) * (S - C))
IF AREA MOD 2 = 0 THEN
SAP = SAP + 1
ELSE
Abraham Sopla Maslucán 31 | P á g i n a
Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

SAI = SAI + 1
END IF
IF MAYOR > AREA THEN
MAYOR = AREA
END IF
ELSE
ANC = ANC + 1
END IF
LOOP
PRINT "ÁREAS PARES ", SAP
PRINT "ÁREAS IMPARES ", SAI
PRINT "ÁREAS NO SE PUEDEN CALCULAR ", ANC
PRINT "ÁREA MAYOR ", MAYOR

39. En el ejercicio anterior se desea conocer cuál es el


triángulo de menor área.

CLS
X=0
P=1
S=0
MENOR = 0
DO WHILE X <= 35
X=X+1
PRINT "OTRA AREA"
PRINT “================================"
INPUT "LADO A: ", A
INPUT "LADO B: ", B
INPUT "LADO C: ", C

Abraham Sopla Maslucán 32 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

IF A + B > C AND B + C > A AND A + C > B THEN


S = (A + B + C) / 2
AREA = S * SQR((S - A) * (S - B) * (S - C))
IF AREA MOD 2 = 0 THEN
SAP = SAP + 1
ELSE
SAI = SAI + 1
END IF
IF MENOR < AREA THEN
MENOR = AREA
END IF
ELSE
ANC = ANC + 1
END IF
LOOP
PRINT "ÁREAS PARES ", SAP
PRINT "ÁREAS IMPARES ", SAI
PRINT "ÁREAS NO SE PUEDEN CALCULAR ", ANC
PRINT "ÁREA MENOR", MENOR

Abraham Sopla Maslucán 33 | P á g i n a


Facultad de Ingeniería de Sistemas y Mecánica Eléctrica
Escuela Profesional de Ingeniería de Sistemas

Abraham Sopla Maslucán


Ingeniero de Sistemas – Universidad
Nacional de Cajamarca, maestro en
Ciencias de la Computación, Instituto
Tecnológico de Monterrey, México.
Doctorando en Ingeniería de Sistemas e
Informática, Universidad Nacional
Mayor de San Marcos. Profesor en la
Escuela Profesional de Ingeniería de
Sistemas, Universidad Nacional Toribio
Rodríguez de Mendoza.
abraham.sopla@untrm.edu.pe

Lima - Perú
Octubre 2017

También podría gustarte