Problemas Algoritmos

download Problemas Algoritmos

of 14

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