Upload
henry-javier-sandoval
View
244
Download
0
Embed Size (px)
Citation preview
1. Programa que permite ingresar e imprimir cierta cantidad de números y luego realizar la búsqueda de cualquiera de los números 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
2. Programa que permite ingresar 8 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
3. Programa que soporta 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
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
6. Diseñar un algoritmo que me permita calcular los 5 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
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
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 4. 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
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
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 3 minutos el costo es de 0.50 Por encima de 3 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
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
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
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 7 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
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
END IF
NEXT
PRINT "Total a Pagar: ", Total
18. Hacer un programa que permita calcular el mínimo común múltiplo de 3 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
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 3 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
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
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
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
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 respectiva 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
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
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
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$
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.
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
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
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
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
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 cual 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
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 cual 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
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