U 1 Ae. %2 Bconceptos%2 Bbasicos%2 Bde%2 Badminist.%2 By%2 Borganiz
02ejerciciosresueltos-1235083033316969-2
Transcript of 02ejerciciosresueltos-1235083033316969-2
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
1/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 1 de 20
Presentacin 2 - Diagramas de flujo u OrdinogramasLa resolucin de estos ejercicios ha sido fruto de las prisas, es por ello que el alumno debetener en cuenta los posibles errores que la soluciones pudiesen contener. Todos los ejerciciosaqu resueltos han sido explicados y resueltos en clase.
La solucin propuesta no es la nica, ni la mejor, ni la ms bella, si es que se puede entender
de forma absoluta en alguna situacin los trminos anteriores. El objetivo es que el alumnoentienda la solucin propuesta, sabiendo verificar si su solucin es correcta.
Puede que algunas notaciones sintcticas no se respeten al 100%, fundamentalmente debido aque el procesador de textos trabaja por su cuenta y a veces hace modificaciones que noproceden:
Pone maysculas donde no se lo piden.
En las comillas , que deben ser el mismo carcter para cerrar y abrir, cambia loscaracteres de forma que la comilla de apertura y cierre son diferentes.
El alumno debe saber estos errores en el pseudocdigo no conllevan ningn problema, perocuando escriba en el lenguaje de programacin el algoritmo debe respetar las normas lxicas ysintcticas del lenguaje o tendr errores de compilacin
Los ejercicios estn numerados referenciado en primer lugar a la diapositiva en la que seencuentran, y en segundo lugar el nmero de ejercicio dentro de la diapositiva en cuestin. Detodas formas se incluye el enunciado del ejercicio para que no haya lugar a dudas acerca de loque se est resolviendo.
8.1 Algoritmo que lea un nmero por el teclado e indique si el nmero ledo es mayorque 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;
8.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;
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
2/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 2 de 20
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;
8.3 Algoritmo que lean un nmero entero entre 1 y 10, y nos muestre por pantalla elnmero 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 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;
10.1 Realizar un algoritmo que lea tres nmeros por teclado y nos indique cual de elloses el mayor.
Programa NumerosOrdenados;Entorno
Entero n1, n2, n3; // Ns leidos por teclado
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
3/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 3 de 20
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;
Sino
Escribe n2, n1, n3;
Fin si;
Fin si;
Sino // n1 = n3 y n2 >= n1
Si n1 > n3 entonces
Escribe n3 n1, n2;
SinoEscribe n1, n3, n2;
Fin si;
Fin si;
Fin si
Fin;
10.3 Algoritmo que lee una calificacin numrica entre 0 y 10 y la transforma encalificacin alfabtica, escribiendo el resultado
0
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
4/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 4 de 20
7
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
5/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 5 de 20
Fin si;
Fin si;
Fin si
Fin;
11.2 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;
11.3 Algoritmo que lee como dato de entrada un ao y nos dice si se trata de un aobisiesto o no. Se sabe que son bisiestos todos los aos mltiplos de 4, excepto losque 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;
12.1 En un determinado comercio se realiza un descuento dependiendo del precio decada producto. Si el precio es inferior a 6 , no se hace descuento; si es mayor oigual a 6 y menor que 60 se hace un 5% de descuento, y si es mayor o igual a
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
6/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 6 de 20
60 se hace un 10% de descuento.Realizar el algoritmo que lee el precio de un producto y nos calcula y escribe suprecio 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;
12.2 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.3 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 >= n3Escribe El menor es , n3;
Fin si;
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
7/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 7 de 20
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
12.4 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;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;
12.5 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;
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
8/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 8 de 20
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 bisiestonumDiasMes = 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 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;
12.6 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
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
9/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 9 de 20
12.7 Algoritmo que calcula la edad de una persona recibiendo como datos de entradala 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;
16.1 Realizar un algoritmo que muestre por pantalla los nmeros pares menores de100.
Programa ParesMenoresQue100;
Entorno
Entero n;
Inicio
n = 2;Mientras n
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
10/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 10 de 20
n = 5;
Mientras n1 hacer
n = n - 1;Escribe n;
Fin Mientras;
Fin
20.1 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
InicionPos=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;
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
11/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 11 de 20
Fin Mientras;
Escribe Total positivos :, nPos;
Escribe Total negativos :, nNeg;
Escribe Total nulos :, nNulos;
Fin
20.2 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 siha 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 mayorBooleano 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
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
12/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 12 de 20
/* 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
20.3 Algoritmo que lee un nmero entero positivo N y calcula e imprime el factorial deN!. Si lee un nmero negativo indica con un mensaje que no es posible la
operacin.Programa Factorial;
Entorno
Entero n;
Entero i; // Contador
Entero resultado;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Si n < 0 entonces
Escribe No existe factorial de un nmero negativo;
Sino
resultado = 1; // Inicializamos el acumulador
i = 1;
Mientras i < n hacer
resultado = resultado * i;
Fin Mientras;
Escribe El factorial de , n, es , resultado;
Fin si;
Fin
20.4 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;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 hacerresultado = resultado * x;
Fin Mientras;
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
13/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 13 de 20
Escribe x, elevado a , n, es , resultado;
Fin si;
Fin
20.5 Algoritmo que obtenga el producto de dos nmeros enteros positivos mediantesumas 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
20.6 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;
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 nmerossea negativo, lo mejor es poner los dos nmeros en positivo y
luego considerar el signo.
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
14/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 14 de 20
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 entonces
Escribe 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;
Fin si;
Fin si
Fin;
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
15/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 15 de 20
21.1 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;
Fin;
21.2 Algoritmo que genera la lista de los N primeros nmeros primos, siendo N el datode entrada.
/* Para resolver este algoritmo es necesario realizar una
aproximacin descendente. Partiendo del hecho de que ya sabemoscalcular si un nmero es o no primo, damos por supuesta esta
operacin e intentamos resolver el problema.
La aproximacin primera sera
Lee n;
i = 1; // Contador que avanza por los nmeros
nPrimos = 0; // N de primos que hemos visualizado
mientras i < n hacer
Si i es un nmero primoentonces
Escribe i;
nPrimos = nPrimos + 1;
Fin Si;/* Fijarse que est fuera del si, se incrementa siempre
independiente de que el nmero i sea primo o no */
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
16/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 16 de 20
i = i + 1;
Fin Mientras;
Una vez tenemos la 1 aproximacin tan solo tenemos que
introducir el cdigo que nos indica si un nmero es primo donde
proceda.
Cuando veamos funciones, veremos que est tarea es trivial.
*/
Programa NPrimerosPrimos;
Entorno
// Variables utilizadas para ver si el nmero i es primo
Entero i, cont;
Booleano esPrimo; // Variable que indicar si es primo o no
// Variables utilizadas para ir probando los nmeros
Entero nPrimos;
Entero n;
// Enterio i; Declarada previamente
InicioEscribe Introduce un nmero: ;
Lee n;
i = 1; // Contador que avanza por los nmeros
nPrimos = 0; // N de primos que hemos visualizado
mientras i < n hacer
/* Si i es un numero primoentonces */
esPrimo = true; // suponemos que el nmero es primo
cont = 2; // Empezamos dividiendo por 2
Mientras cont < i y esPrimo hacer
// Mientras cont < i y esPrimo=true hacer Hace los mismo
Si n % cont entoncesesPrimo = false; // Se ha encontrado un divisor
Fin si;
Fin mientras;
Si esPrimo entonces
Escribe i;
nPrimos = nPrimos + 1;
Fin Si;
/* Fijarse que est fuera del si, se incrementa siempre
independiente de que el nmero i sea primo o no */
i = i + 1;
Fin Mientras;
Fin;
21.3 Algoritmo lea un nmero N y muestre por pantalla los nmeros primos menoresque N.
/* Para resolver este algoritmo es necesario realizar una
aproximacin descendente. Partiendo del hecho de que ya sabemos
calcular si un nmero es o no primo, damos por supuesta esta
operacin e intentamos resolver el problema.
La aproximacin primera sera
Lee n;
Para i=1 hasta n-1 hacer
Si i es un nmero primoentonces
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
17/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 17 de 20
Escribe i;
Fin Si;
Fin Para;
Una vez tenemos la 1 aproximacin tan solo tenemos que
introducir el cdigo que nos indica si un nmero es primo donde
proceda.
Cuando veamos funciones, veremos que est tarea es trivial.
Este algoritmo a diferencia del anterior saca los nmeros primos
menores que N, mientras que el otro sacaba los N primeros primos.
La diferencia es la siguiente, para N=5
N primeros : 1,2,3,5,7
< N : 1,2,3,5
*/
Programa NPrimerosPrimos;
Entorno
// Variables utilizadas para ver si el nmero i es primoEntero i, cont;
Booleano esPrimo; // Variable que indicar si es primo o no
// Variables utilizadas para ir probando los nmeros
Entero n;
// Enterio i; Declarada previamente
Inicio
Escribe Introduce un nmero: ;
Lee n;
Para i=1 hasta n-1
/* Si i es un numero primoentonces */
esPrimo = true; // suponemos que el nmero es primo
cont = 2; // Empezamos dividiendo por 2
Mientras cont < i y esPrimo hacer
Si n % cont entonces
esPrimo = false; // Se ha encontrado un divisor
Fin si;
Fin mientras;
Si esPrimo entonces
Escribe i;
Fin Si;
Fin Para;
Fin;
21.4 Algoritmo que calcula e imprime los nmeros perfectos menores que 1000. (Unnmero es perfecto si la suma de sus divisores, excepto l mismo, es igual al propionmero.).
/* Para resolver este algoritmo es necesario realizar una
aproximacin descendente. Damos por supuesta la operacin es
numero perfectoque ms adelante desarrollaremos
La aproximacin primera sera
Para n=1 hasta 999 hacer
Si n es numero perfectoentoncesEscribe n;
Fin Si;
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
18/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 18 de 20
Fin Para;
Ahora debemos desarrollar el subproblema es numero perfecto
sumaDivisores = 0;
Para i=1 hasta n-1 hacer
Si n % i = 0 entonces
sumaDivisores = sumaDivisores + n;Fin si;
Fin Para
Si sumaDivisores = n entonces
// N es un nmero perfecto
Fin si;
De nuevo unimos las dos soluciones y ya tenemos resuelto el
problema
*/
Programa NumerosPerfectos;
Entorno
Entero n i, sumaDivisores;
InicioPara n=1 hasta 999 hacer
/* Si n es numero perfectoentonces */
sumaDivisores = 0;
Para i=1 hasta n-1 hacer
Si n % i = 0 entonces
sumaDivisores = sumaDivisores + n;
Fin si;
Fin Para
Si sumaDivisores = n entonces
// N es un nmero perfecto
Escribe n;
Fin Si;
Fin Para;
Fin;
21.5 Algoritmo que evala un polinomio de grado N. Los datos de entrada son el valorde la variable y los coeficientes.
Programa EvaluaPolinomio;
Entorno
Entero coef, grado, x, i;
Entero valorPol;
Inicio
Escribe Grado del polinomio: ;
Lee grado;
Escribe Valor de X: ;
Lee x;
// Acumulador en el que guardaremos el valor del polinomio
valorPol = 0;
Para i=x hasta 0 incremento -1
Escribe Introduce coeficiente de grado (, i, ):;
Lee coef;
valorPol = valorPol + coef * x ^ i;
Fin para;
Escribe El valor del polinomio es: , valorPol;
Fin
21.6 Algoritmo que lee un nmero entero positivo N e imprime su tabla de multiplicar.Programa TablaMultiplicar;
Entorno
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
19/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 19 de 20
Entero n, i;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Para i=1 hasta 10
Escribe i, x , n, = , i*n; // Siguiente trmino de laFin Para;
Fin
22.1 Algoritmo que lee un nmero entero y positivo N y escribe la lista de susdivisores.
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
22.2 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
22.3 Algotimo que lee un nmero entero y positivo N y escribe los N primeros trminosde la sucesin de Fibonacci. La sucesin se caracteriza porque cada trmino esigual a la suma de sus dos anteriores, dandose por definicin el primero (0) y elsegundo (1).
a1= 0 a2= 1 an= an-1 + an-2
Programa Fibonacci;
Entorno
Entero an, an_1;
Entero suma; // an + an_1
Entero n, cont;
Inicio
Escribe Introduce un nmero: ;
-
5/20/2018 02ejerciciosresueltos-1235083033316969-2
20/20
Fundamentos de Programacin I.E.S San Sebastin - Huelva
Santiago D. Pgina 20 de 20
Lee n;
// Casos base, triviales
Si n > 0 entonces
Escribe 0;
Fin si;
Si n > 1 entoncesEscribe 0;
Fin si;
// Comenzamos bucle
an_1 = 0;
an = 1;
/* Los dos casos anteriores ya se han visualizado, por eso
empezamos en 3 */
Para cont=3 hasta n
Suma = an + an_1; // Calculamos el trmino siguiente
Escribe suma;
// Los dos ltimos trminos avanzan una posicin
an_1 = an;an = suma;
Fin Para;
Fin