Problemas Algoritmos
-
Upload
ana-belen-cantero-paz -
Category
Documents
-
view
219 -
download
0
Transcript of Problemas Algoritmos
-
7/28/2019 Problemas Algoritmos
1/14
1. Algoritmo que lea un nmero por el teclado e indique si el nmero ledo esmayor
que 10 y si el nmero ledo es menor que 20.Programa CompararNumero;
Entorno
Entero numero;
InicioEscribe Introduce un nmero:;
Lee numero;
Si numero > 10 entonces
Escribe El nmero es mayor que 10;
Fin si;
Si numero < 20 entonces
Escribe El nmero es menor que 20;
Fin si;
Fin;
2. Algoritmo que lea dos nmeros por teclado y muestre un mensaje por pantallaindicando si el cuadrado el primero es mayor que el cubo del segundo.
Programa CoparaConOperaciones;Entorno
Entero num1, num2; // Ns leidos por teclado
Entero cuadrado, cubo; // Vars. Temporales
Inicio
Escribe Introduce el primer nmero;
Lee num1;
Escribe Introduce el segundo nmero;
Lee num2;
cuadrado = n1 * n1;
cubo = n2 * n2 * n2;
Si cuadrado > cubo entonces
Escribe El cuadrado del 1 es mayor que el cubo del 2;
Fin si;
Fin;
3. Algoritmo que lean un nmero entero entre 1 y 10, y nos muestre por pantallael nmero en letra (el literal). Si el nmero ledo no esta comprendido entre 1 y 10mostrar dicha incidencia.Programa NumeroALiteral;
Entorno
Entero n;
Inicio
Escribe Introduce un nmero: ;
Lee n;
/* Aunque se cumpla una condicin el ordenador debe evaluarlas
todas, con el coste de rendimiento que esto representa */
Si n = 1 entoncesEscribe Uno;
Fin si;
Si n = 2 entonces
Escribe Dos;
Fin si;
Si n = 3 entonces
Escribe Tres;
Fin si;
Si n = 4 entonces
Escribe Cuatro;
Fin si;
Si n = 5 entonces
Escribe Cinco;
Fin si;
Si n = 6 entonces
-
7/28/2019 Problemas Algoritmos
2/14
Escribe Seis;
Fin si;
Si n = 7 entonces
Escribe Siete;
Fin si;
Si n = 8 entonces
Escribe Ocho;
Fin si;
Si n = 9 entonces
Escribe Nueve;
Fin si;
Si n = 10 entonces
Escribe Diez;
Fin si;
/* Comprobamos si el nmero no est entre 1 y 10 para mostrar
mensaje */
Si n < 1 o n> 10 entonces
Escribe El nmero no est entre 1 y 10;
Fin si;
Fin;
4. Realizar un algoritmo que lea tres nmeros por teclado y nos indique cual deellos es el mayor.Programa NumerosOrdenados;
Entorno
Entero n1, n2, n3; // Ns leidos por teclado
Inicio
Escribe Introduce 3 nmeros;
Lee n1, n2, n3;
Si n1 > n2 entonces
// El mayor ser n1 o n3
Si n1 > n3 entonces
Escribe El mayor es , n1;
Sino // n1 n2 entonces
Si n2 > n3 entonces
Escribe n3, n2, n1;
Sino // n2 n3 entonces
Escribe n2, n3, n1;
SinoEscribe n2, n1, n3;
Fin si;
-
7/28/2019 Problemas Algoritmos
3/14
Fin si;
Sino // n1 = n3 y n2 >= n1
Si n1 > n3 entonces
Escribe n3 n1, n2;
Sino
Escribe n1, n3, n2;
Fin si;
Fin si;
Fin si
Fin;
6. Algoritmo que lee una calificacin numrica entre 0 y 10 y la transforma encalificacin alfabtica, escribiendo el resultado
0
-
7/28/2019 Problemas Algoritmos
4/14
7. Algoritmo que lee tres nmeros cualesquiera y nos indica todas sus relacionesde igualdadPrograma RelacionesIgualdad;
Entorno
Entero n1, n2, n3;
Inicio
Escribe Introduce tres nmeros: ;Lee n1, n2, n3;
Si n1 = n2 y n1 = n3 entonces
Escribe Los tres nmeros son iguales;
Sino
Si n1 = n3 entonces
Escribe El 1 y el 2 son iguales;
Sino
Si n2 = n3 entonces
Escribe El 2 y el 3 son iguales;
Sino
Escribe Todos son distintos;
Fin si;
Fin si;
Fin siFin;
8. Algoritmo que recibe como datos de entrada una hora expresada en horas,minutos y segundos que nos calcula y escribe la hora, minutos y segundos quesern transcurrido un segundo.
Programa UnSegundoDespues;
Entorno
Entero hora, min, seg;
Inicio
Escribe Introduce hora: ;
Lee hora;
Escribe Introduce minuto: ;
Lee min;Escribe Introduce segundo: ;
Lee seg;
seg = seg +1;
Si seg > 60 entonces
min = min + 1;
seg = 0;
Si min > 60 entonces
hora = hora + 1;
min = 0;
Si hora > 24 entonces
hora = 0;
Fin si;
Fin si;
Fin si;
Escribe Un segundo despus son las: , hora, :, min, :,
seg;
Fin;
9. Algoritmo que lee como dato de entrada un ao y nos dice si se trata de unao bisiesto o no. Se sabe que son bisiestos todos los aos mltiplos de 4,excepto los que sean mltiplos de 100 sin ser mltiplos de 400.
Programa EsBisiesto;
Entorno
Entero anyo;
Inicio
Escribe Introduce Ao: ;
Lee anyo;
Si (anyo % 4 = 0) y
-
7/28/2019 Problemas Algoritmos
5/14
No ( anyo % 100 = 0 y no ( anyo % 400 =0) ) entonces
Escribe El ao , anyo , es bisiesto;
Sino
Escribe El ao , anyo , NO es bisiesto;
Fin si;
Fin;
10. En un determinado comercio se realiza un descuento dependiendo del preciode cada producto. Si el precio es inferior a 6 , no se hace descuento; si esmayor o igual a 6 y menor que 60 se hace un 5% de descuento, y si esmayor o igual a 60 se hace un 10% de descuento. Realizar el algoritmo quelee el precio de un producto y nos calcula y escribe su precio final.
Programa Calculo_Precio_Final;
Entorno
Entero PrecioInicial, Dto;
Inicio
Escribe Introduce precio Inicial: ;
Lee PrecioInicial;
Si PrecioInicial < 6 entonces
Dto = 0;Sino
Si PresioInical < 60 entonces
Dto = 5;
Sino
Dto = 10;
Fin si;
Escibe Precio final = , PrecioInicial*(1 + Dto/100),
Descuento = , Dto, %;
Fin;
11. Algoritmo que lee el precio final pagado por un producto y su precio de tarifa ynos calcula el porcentaje de descuento que le ha sido aplicado.Programa Calculo_Descuento;
Entorno
Entero PrecioFinal, PrecioTarifa;
Inicio
Escribe Introduce precio Tarifa: ;
Lee PrecioTarifa;
Escribe Introduce precio Final: ;
Lee PrecioFinal;
/* La dificultad de este problema es saber que frmula
matemtica se debe utilizar. Apenas tiene complejidad
algortmica */
Dto = (1-PrecioFinal/PrecioTarifa)*100;
Escibe Descuento = , Dto, %;
Fin;
12. Algoritmo que lee 3 nmeros distintos y nos dice cual de ellos es el menor.Programa NumeroMenor;
Entorno
Entero n1, n2, n3; // Ns leidos por teclado
Inicio
Escribe Introduce 3 nmeros;
Lee n1, n2, n3;
Si n1=n2 o n1=n3 o n2=n3 entonces
Escribe Los nmeros no son distintos;
Sino
Si n1 < n2 entonces
// El menor ser n1 o n3
Si n1 < n3 entonces
Escribe El menor es , n1;
Sino // n1 >= n3
-
7/28/2019 Problemas Algoritmos
6/14
Escribe El menor es , n3;
Fin si;
Sino
// n1 >= n2, debemos comparar n2 y n3. El menor ser n2 o n3
Si n2 < n3 entonces
Escribe El menor es , n2;
Sino
Escribe El menor es , n3;
Fin si;
Fin si;
Fin si;
Fin
13. Algoritmo que lee como datos de entrada una fecha expresada en da (1..31),mes (1..12, y ao y nos dice la fecha que ser el da siguiente. Se supondr quefebrero tiene siempre 28 das.Programa UnDiaDespues;
Entorno
Entero dia, mes, anyo;
Entero numDiasMes;
InicioEscribe Introduce Dia: ;
Lee dia;
Escribe Introduce Mes: ;
Lee mes;
Escribe Introduce Ao: ;
Lee Ao;
Si mes = 2 entonces
numDiasMes = 28;
Sino
Si mes=4 o mes=6 o mes=9 o mes=11 entonces
// Meses de 30 das: Abrir, Junio, Sept. Nov.
NumDiasMes = 30;
Sino// El resto tiene 31 das
NumDiasMes = 31;
Fin si;
Fin si;
Si dia > numDiasMes entonces
mes = mes + 1;
dia = 1;
Si mes > 12 entonces
anyo = anyo + 1;
mes = 1;
Fin si;
Fin si;
Escribe Un da despus es: , dia, /, mes, /, anyo;
Fin;
14. Plantea el algoritmo anterior sin suponer que febrero tiene 28 das.Programa UnDiaDespues;
Entorno
Entero dia, mes, anyo;
Entero numDiasMes;
Inicio
Escribe Introduce Dia: ;
Lee dia;
Escribe Introduce Mes: ;
Lee mes;
Escribe Introduce Ao: ;
Lee Ao;Si mes = 2 entonces
Si (anyo % 4 = 0) y
-
7/28/2019 Problemas Algoritmos
7/14
No ( anyo % 100 = 0 y no ( anyo % 400 =0) ) entonces
// Es bisiesto
numDiasMes = 29;
Sino
numDiasMes = 28;
Fin Si;
Sino
Si mes=4 o mes=6 o mes=9 o mes=11 entonces
// Meses de 30 das: Abrir, Junio, Sept. Nov.
NumDiasMes = 30;
Sino
// El resto tiene 31 das
NumDiasMes = 31;
Fin si;
Fin si;
// Filtramos si la fecha es correcta
Si dia>=1 y dia= 1 y mes numDiasMes entonces
mes = mes + 1;
dia = 1;
Si mes > 12 entoncesanyo = anyo + 1;
mes = 1;
Fin si;
Fin si;
Escribe Un da despus es: , dia, /, mes, /, anyo;
Sino
Escribe La fecha es incorrecta;
Fin Si;
Fin;
15. Algoritmo que lee dos nmeros enteros, positivos y distintos y nos dice si elmayor es mltiplo del menor o, lo que es lo mismo, si el menor es divisor del mayor.Programa EsDivisorElMenor;
Entorno
Entero n1, n2; // Ns ledos por teclado
Entero mayor, menor; // Variables temporales
Inicio
Escribe Introduce 2 nmeros;
Lee n1, n2;
// Buscamos el mayor y el menor
Si n1 > n2 entonces
mayor = n1;
menor = n2;
Sino
mayor = n2;
menor = n1;
Fin si;Si mayor % menor = 0 entonces
Escribe Mayor, es mltiplo de , menor;
Sino
Escribe No existe ninguna relacin entre los nmeros;
Fin si;
Fin
16. Algoritmo que calcula la edad de una persona recibiendo como datos deentrada la fecha de nacimiento, y la fecha actual, ambas en tres variables.
Programa EdadEnAnyos;
Entorno
Entero d_n, m_m, a_n; // Fecha de nacimiento
Entero d_a, m_a, a_a; // Fecha de actualEntero Edad; // variable temporal
Inicio
-
7/28/2019 Problemas Algoritmos
8/14
Escribe Introduce Fecha nacimiento: ;
Lee d_n, m_n, a_n;
Escribe Fecha actual: ;
Lee d_a, m_a, a_a;
/* La edad de una persona ser igual al ao actual menos el ao
de nacimiento. Si aun no ha cumplido aos en el ao actual
habr que restarle 1*/
Edad = a_a a_n;
/* Comprobamos si ya ha cumplido los aos o no */
Si m_a < m_n o (m_a = m_n y dia_a < d_n) entonces
// Aun no ha cumplido los aos este ao
Edad = Edad - 1;
Fin si;
Escribe Edad = , Edad;
Fin;
17. Realizar un algoritmo que muestre por pantalla los nmeros pares menores de100.Programa ParesMenoresQue100;
Entorno
Entero n;Inicio
n = 2;
Mientras n
-
7/28/2019 Problemas Algoritmos
9/14
Escribe Introduce un nmero: ;
Lee n;
i = 1;
Mientras i < n hacer
Escribe i;
i = i + 1;
Fin Mientras;
Fin
Otra formaPrograma ListaNumeros;
Entorno
Entero n;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Mientras n>1 hacer
n = n - 1;
Escribe n;
Fin Mientras;
Fin
20. Algoritmo que lee una secuencia de 10 nmeros y obtiene e imprime cuantos haypositivos, negativos y nulos.Programa CuentaNumeros;
Entorno
Entero n;
Entero i; // Variable control del bucle
Entero nPos, nNeg, nNulos; // Contadores
Inicio
nPos=0; nNeg=0; nNulos=0;
i = 0;
Mientras i0 entonces
nPos = nPos + 1; // Es positivo
Sino
Si n < 0 entonces
nNeg = nNeg + 1; // Es negativo
Sino
nNulos = nNulos + 1; // Es cero
FinSi;
FinSi;
i = i + 1;
Fin Mientras;
Escribe Total positivos :, nPos;
Escribe Total negativos :, nNeg;
Escribe Total nulos :, nNulos;Fin
21. Algoritmo que lee una secuencia de nmeros no nulos, terminada con laintroduccin de un 0, y obtiene e imprime el mayor, visualizando un mensaje de si haledo algn nmero negativo.Programa CuentaNumeros;
Entorno
Entero n;
Entero mayor; // Guarda el valor del mayor
Booleano hayNegativos; // switch
Inicio
hayNegativos = false; // suponemos que no hay negativos
/* El menor de los posibles, cualquier nmero de los ledos por
teclado ser mayor que este */
-
7/28/2019 Problemas Algoritmos
10/14
mayor = -9999999;
hacer
Escribe Introduce un nmero: ;
Lee n;
Si n 0 entonces
// Procesamos el nmero ledo
Si n < 0 entonces
hayNegativos = true; // Se ha encontrado un negativo
FinSi;
Si n > mayor entonces
/* Se ha encontrado un nmero mayor que el actual, lo
seleccionamos como mayor */
mayor = n
Fin si;
Fin si;
Mientras n 0;
Escribe El mayor es :, mayor;
Si hay Negativos entones
Escribe Se han encontrado nmeros negativos;
Fin Si;
Fin
Otra forma, no presuponemos ningn nmero como mayorPrograma CuentaNumeros;
Entorno
Entero n;
Entero mayor; // Guarda el valor del mayor
Booleano hayNegativos; // switch
Booleano esPrimeraVez;
Inicio
hayNegativos = false;
esPrimeraVez = true;
hacer
Escribe Introduce un nmero: ;
Lee n;
Si n 0 entonces
// Procesamos el nmero ledo
Si n < 0 entonces
hayNegativos = true; // Se ha encontrado un negativo
FinSi;
Si esPrimeraVez o n > mayor entonces
/* Se ha encontrado un nmero mayor que el actual o es el
primer nmero leido, lo seleccionamos como mayor */
mayor = n;
esPrimeraVez = false;
Fin si;
Fin si;
Mientras n 0;Si esPrimeraVez entonces
Escribe No se ha introducido ningn nmero;
Sino
Escribe El mayor es :, mayor;
Fin si;
Si hay Negativos entones
Escribe Se han encontrado nmeros negativos;
Fin Si;
Fin
22. Algoritmo que lee un nmero X y otro entero positivo N y calcula la N-simapotencia de X (sin utilizar el operador de potencia).
Programa Potencia;Entorno
Entero x, n;
-
7/28/2019 Problemas Algoritmos
11/14
Entero i; // Contador
Entero resultado;
Inicio
Escribe Introduce un nmero: ;
Lee x;
Escribe Introduce la potencia: ;
Lee n;
Si n < 0 entonces
Escribe No se calcular potencias negativas;
Sino
resultado = 1; // Inicializamos el acumulador
i = 1;
Mientras i < n hacer
resultado = resultado * x;
Fin Mientras;
Escribe x, elevado a , n, es , resultado;
Fin si;
Fin
23. Algoritmo que obtenga el producto de dos nmeros enteros positivos mediante
sumas sucesivas./* Ampliamos el problema para permitir nmeros negativos */
Programa Producto;
Entorno
Entero n1, n2;
Entero i; // Contador
Entero resultado;
Booleano resultadoNeg;
Inicio
Escribe Introduce un nmero 1: ;
Lee n1;
Escribe Introduce un nmero 2: ;
Lee n2;
/* Debemos considerar el caso de que alguno de los nmerossea negativo, lo mejor es poner los dos nmeros en positivo y
luego considerar el signo.
Vamos a evitar usar el operador de producto * */
resultadoNeg = (n1 < 0 o n2 < 0) y no (n1 < 0 y n2 < 0);
// Convertimos los nmeros a positivo
Si n1 < 0 entonces
n1 = -n1;
Finsi
Si n2 < 0 entonces
n2 = -n2;
Finsi
resultado = 0; // Inicializamos el acumulador
i = 1;
Mientras i < n2 hacerresultado = resultado + n1;
Fin Mientras;
Si resultadoNeg entonces
resultadoNeg = -resultadoNeg; // Cambiamos de signo
Fin si;
Escribe n1, por , n2, es , resultado;
Fin si;
Fin
24. Algoritmos que obtenga el cociente y el resto de dos nmeros enteros positivosmediante restas./* Ampliamos el problema para permitir nmeros negativos */
Programa Division;Entorno
Entero dividendo, divisor;
-
7/28/2019 Problemas Algoritmos
12/14
Entero resto, cociente;
Booleano resultadoNeg;
Inicio
Escribe Introduce dividendo: ;
Lee dividendo;
Escribe Introduce divisor: ;
Lee divisor;
/* Debemos considerar el caso de que alguno de los nmeros
sea negativo, lo mejor es poner los dos nmeros en positivo y
luego considerar el signo.
Vamos a evitar usar el operador de producto * */
resultadoNeg = (dividendo < 0 o divisor < 0) y no (dividendo n2 entonces
Si n2 > n3 entonces
Escribe n3, n2, n1;
Sino // n2 n3 entoncesEscribe n2, n3, n1;
Sino
Escribe n2, n1, n3;
Fin si;
Fin si;
Sino // n1 = n3 y n2 >= n1
Si n1 > n3 entonces
Escribe n3 n1, n2;
Sino
Escribe n1, n3, n2;Escribe Los nmeros se introdujeron ordenados;
Fin si;
-
7/28/2019 Problemas Algoritmos
13/14
Fin si;
Fin si
Fin;
26. Algoritmo que lea un nmero por teclado y nos diga si es primo./* Un nmero es primo cuando solo es divisible por si mismo y por
el 1.Para saber si un nmero es primo debemos dividirlo sucesivamente
por sus posibles divisores (nmeros menor que l) y si encontramos
algn divisor diremos que el nmero NO es primo, es caso contrario
ser un nmero primo.
*/
Programa NumeroPrimo;
Entorno
Entero n, cont;
Booleano esPrimo; // Variable que indicar si es primo o no
Inicio
Escribe Introduce un nmero: ;
Lee n;
esPrimo = true; // suponemos que el nmero es primo
cont = 2; // Empezamos dividiendo por 2/* Iremos dividiendo el nmero por sus posibles divisores hasta
que encontremos un divisor, y por tanto el nmero deje de ser
primo o hasta que acabemos la lista de posibles divisores (los
menores que l) */
Mientras cont < n y esPrimo hacer
// La linea anterior es igual a:
// Mientras cont < n y esPrimo=true hacer
Si n % cont == 0 entonces
esPrimo = false; // Se ha encontrado un divisor
Fin si;
Fin mientras;
Si esPrimo entonces
Escribe El nmero , n, es primo;
Sino
Escribe El nmero , n, NO es primo;
Fin si;
27. Algoritmo que lee un nmero entero positivo N e imprime su tabla de multiplicar.Programa TablaMultiplicar;
Entorno
Entero n, i;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Para i=1 hasta 10
Escribe i, x , n, = , i*n; // Siguiente trmino de la
Fin Para;Fin
28. Algoritmo que lee un nmero entero y positivo N y escribe la lista de sus divisores.Programa ListaDivisores;
Entorno
Entero n, i;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Para i=1 hasta n
Si n % i = 0 entonces
Escribe i;
Fin Si;Fin Para;
Fin
-
7/28/2019 Problemas Algoritmos
14/14
29. Algoritmo que lee un nmero entero y positivo y calcula y escribe la suma de susdivisores.Programa SumaDivisores;
Entorno
Entero n, i;
Entero suma;Inicio
Escribe Introduce un nmero: ;
Lee n;
Suma=0;
Para i=1 hasta n
Si n % i = 0 entonces
Suma = suma + i;
Fin Si;
Fin Para;
Escribe La suma de sus divisores es: , suma;
Fin