Vous êtes sur la page 1sur 14

Algoritmo que lea un nmero por el teclado e indique si el nmero ledo es mayor que 10 y si el nmero ledo es menor que

20.
Programa CompararNumero; Entorno Entero numero; Inicio Escribe 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;

1.

2. Algoritmo que lea dos nmeros por teclado y muestre un mensaje por pantalla indicando 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 pantalla el nmero en letra (el literal). Si el nmero ledo no esta comprendido entre 1 y 10 mostrar 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 entonces Escribe 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

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 de ellos 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 <= n3 Escribe El mayor es , n3; Fin si; Sino // n1 <= n2, debemos comparar n2 y n3. El mayor ser n2 o n3 Si n2 > n3 entonces Escribe El mayor es , n2; Sino Escribe El mayor es , n3; Fin si; Fin si Fin

5. Algoritmo que lee tres nmeros cualesquiera y los escribe ordenados de forma ascendente.
Programa NumerosOrdenAscendente; Entorno Entero n1, n2, n3; Inicio Escribe Introduce tres nmeros: ; Lee n1, n2, n3; Si n1 > n2 entonces Si n2 > n3 entonces Escribe n3, n2, n1; Sino // n2 <= n3 Si n1 > n3 entonces Escribe n2, n3, n1; Sino Escribe n2, n1, n3; Fin si;

Fin si; Sino // Si n2 < Escribe Sino // Si n1 > Escribe Sino Escribe Fin si; Fin si; Fin si Fin;

n1 <= n2 n3 entonces n1, n2, n3; n2 >= n3 y n2 >= n1 n3 entonces n3 n1, n2; n1, n3, n2;

6. Algoritmo que lee una calificacin numrica entre 0 y 10 y la transforma en calificacin alfabtica, escribiendo el resultado

0<=Nota<3 MD 3<=Nota<5 INS 5<=Nota<6 SUF 6<=Nota<7 BIE 7<=Nota<9 NOT 9<=Nota<=10 SOB
Programa NumeroALiteral; Entorno Entero n; Inicio Escribe Introduce un nmero: ; Lee n; /* No sangraremos todas las sentencias incluidas dentro del Sino pues no hay espacio en el papel y adems est forma es ms clara. No hay que olvidar poner tantos Fin si como Si hayamos abierto */ Si n = 1 entonces Escribe Uno; Sino Si n = 2 entonces Escribe Dos; Sino Si n = 3 entonces Escribe Tres; Sino Si n = 4 entonces Escribe Cuatro; Sino Si n = 5 entonces Escribe Cinco; Sino Si n = 6 entonces Escribe Seis; Sino Si n = 7 entonces Escribe Siete; Sino Si n = 8 entonces Escribe Ocho; Sino Si n = 9 entonces Escribe Nueve; Sino Si n = 10 entonces Escribe Diez; Sino /* El nmero no est entre 1 y 10 para mostrar mensaje */ Escribe El nmero no est entre 1 y 10; Fin si; Fin Si; Fin Si; Fin Si; /* A diferencia de la implementacin del ejercicio 8.3 este algoritmo cuando una condicin es cierta no evala el resto innecesariamente */ Fin;

7. Algoritmo que lee tres nmeros cualesquiera y nos indica todas sus relaciones de igualdad
Programa 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 si Fin;

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 que sern 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 un ao 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

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 precio de cada producto. Si el precio es inferior a 6 , no se hace descuento; si es mayor o igual a 6 y menor que 60 se hace un 5% de descuento, y si es mayor o igual a 60 se hace un 10% de descuento. Realizar el algoritmo que lee 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 y nos 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

Escribe El menor es Fin si; Sino // n1 >= n2, debemos Si n2 < n3 entonces Escribe El menor es Sino Escribe El menor es Fin si; Fin si; Fin si; Fin

, n3; comparar n2 y n3. El menor ser n2 o n3 , n2; , n3;

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 que febrero tiene siempre 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 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

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<=numDiasMes y Mes >= 1 y mes <= 12 entonces 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; Sino Escribe La fecha es incorrecta; Fin Si; Fin;

15. Algoritmo que lee dos nmeros enteros, positivos y distintos y nos dice si el mayor 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 de entrada 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 actual Entero Edad; // variable temporal Inicio

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 de 100.
Programa ParesMenoresQue100; Entorno Entero n; Inicio n = 2; Mientras n<100 hacer Escribe n; n = n + 2; Fin Mientras; Fin

Otra forma
Programa ParesMenoresQue100; Entorno Entero n; Inicio n = 1; Mientras n<100 hacer Si n % 2 = 0 entonces Escribe n; Fin si; n = n + 1; Fin Mientras; Fin

18. Realizar un algoritmo que muestre por pantalla los nmeros mltiplos de 5 menores que 10000.
Programa MultDe5Menor1000; Entorno Entero n; Inicio n = 5; Mientras n<1000 hacer Escribe n; n = n + 5; Fin Mientras; Fin

19. Algoritmo que lea un nmero por teclado e imprima por pantalla todos los nmeros positivos menores que N
Programa ListaNumeros; Entorno Entero n; Entero i; // Contador Inicio

Escribe Introduce un nmero: ; Lee n; i = 1; Mientras i < n hacer Escribe i; i = i + 1; Fin Mientras; Fin

Otra forma
Programa 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 hay positivos, 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 i<10 hacer Escribe Introduce un nmero: ; Lee n; Si n>0 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 la introduccin de un 0, y obtiene e imprime el mayor, visualizando un mensaje de si ha ledo 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 */

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 mayor


Programa 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-sima potencia de X (sin utilizar el operador de potencia).
Programa Potencia; Entorno Entero x, n;

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 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 = (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 hacer resultado = 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 positivos mediante restas.
/* Ampliamos el problema para permitir nmeros negativos */ Programa Division; Entorno Entero dividendo, divisor;

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 < 0 y divisor < 0); // Convertimos los nmeros a positivo Si dividendo < 0 entonces dividendo = - dividendo; Finsi Si divisor < 0 entonces divisor = - divisor; Finsi cociente = 0; // Inicializamos el acumulador resto = dividendo; Mientras divisor < resto hacer resto = resto = divisor; cociente = cociente + 1; Fin Mientras; Si resultadoNeg entonces cociente = -cociente; // Cambiamos de signo Fin si; Escribe dividendo, entre , divisor, da , cociente , con resto , resto; Fin

25. Algoritmo que lee tres nmeros A, B, C, y los imprime en orden creciente e indica si fueron introducidos en ese orden.
/* Este problema es casi idntico a uno resulto con anterioridad */ Programa NumerosOrdenAscendente; Entorno Entero n1, n2, n3; Inicio Escribe Introduce tres nmeros: ; Lee n1, n2, n3; Si n1 > n2 entonces Si n2 > n3 entonces Escribe n3, n2, n1; Sino // n2 <= n3 Si n1 > n3 entonces Escribe n2, n3, n1; Sino Escribe n2, n1, n3; Fin si; Fin si; Sino // n1 <= n2 Si n2 < n3 entonces Escribe n1, n2, n3; Sino // n2 >= 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;

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

29. Algoritmo que lee un nmero entero y positivo y calcula y escribe la suma de sus divisores.
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