Escriba un algoritmo que usando un bucle for infinito, y

Anuncio
Fundamentos de Programación
Tema 5. Relación I
EJERCICIOS. Tema 5. Relación I.
1. Escribe un algoritmo que usando un bucle for infinito, y una sentencia break calcule la
suma de los n>0 primeros números que se lean del teclado. El número n es un dato y es
el primero de la secuencia.
Análisis del problema
Primeramente se lee el valor de n que cumpla la condición dada, para posteriormente
mediante un bucle for infinito ir leyendo números del teclado hasta que se cumpla que se
lea la n indicada.
2. Escribir
un programa que lea un límite máximo entero positivo, una base entera
positiva, y visualice todas las potencias de la base, menores que el valor especificado
límite máximo.
Análisis del problema
Se implementan tres bucles. Un primer huele do-while, valida la entrada del límite entero
positivo. Un segundo bucle do-while, valida la entrada de la base entera positiva. Un tercer
bucle controlado por un for escribe las distintas potencias.
3. Diseña un algoritmo que sume los 20 primeros números impares.
Análisis del problema
Se necesita un acumulador suma que será donde se sumen los respectivos números
impares. Para calcular los 20 primeros números impares basta con recorrer mediante un
bucle for los números del 0 al 19 y si i es la variable que lo controla, el correspondiente
número impar es 2 * i + 1.
4. Escribe un programa que lea un número n1, y escriba la tabla de multiplicar del número.
Análisis del problema
Se lee el número y mediante un bucle for se itera 10 veces escribiendo los resultados.
5. Escriba un programa que presente la tabla de multiplicar del 1, 2, ..... ,9.
Análisis del problema
Pág. 1/9
I.E.S. Iliberis Atarfe 03/04
Fundamentos de Programación
Tema 5. Relación I
Se hace de una manera análoga al ejercicio anterior, pero ahora anidando dos bucles for, y
sin leer ningún
6. Diseñar
dato.
e implementar un programa que solicite a su usuario un valor nonegativo n y
visualice la siguiente salida:
1
2
3 ........ n-1
1
2
3 ........ n-1
n
.........
1
2
1
2
3
1
7. Escribir y ejecutar un programa que invierta los dígitos de un entero positivo dado.
Análisis del problema
Para resolver el problema se inicializa una variable n1 a cero. Un bucle controlado por una
variable n (leída por teclado) termina cuando su valor es cero. En cada iteración del bucle
se calcula en la propia variable n el valor del cociente entero de n entre 10. Así si la
variable n toma el valor de 234, en las sucesivas iteraciones irá tornando los valores 234,
23, 2 y cero. En cada iteración del bucle, se va calculando el resto del cociente entero de
n entre 10. Es decir se van calculando los valores, 4, 3, 2. Para conseguir obtener el
número invertido, basta con observar que 432 = 4 * 1 0 * 10 + 3 * 1 0 +2 = ( ( (O * 1 0 +4) *
10 +3) * 1 0+2)
(Método de Horner de evaluación de polinomios). Es decir basta con
acumular en n1 el valor de n1
multiplicado por 10 y sumarle el resto de la división entera.
De todo lo dicho anteriormente, se deduce obviamente el programa.
8. Implementar el algoritmo de Euclides (tema 1) que encuentra el máximo común divisor
de dos números enteros y positivos.
Análisis del problema
Pág. 2/9
I.E.S. Iliberis Atarfe 03/04
Fundamentos de Programación
Tema 5. Relación I
El algoritmo transforma un par de enteros positivos (n, m) en una par (n1, m1) dividiendo
repetidamente el entero mayor por el menor y reemplazando el mayor por el menor y el
menor por el resto. Cuando el resto es 0, el natural más pequeño distinto de cero de la
pareja será el máximo común divisor de la pareja original. La codificación deberá leer
primeramente los números enteros n y m, validando la entrada. Posteriormente mediante
otro bucle se efectúan las correspondientes transformaciones para obtener el máximo
común divisor.
9. Escribe
un algoritmo que lea dos números enteros positivos y calcule el mínimo común
múltiplo de los dos números.
Análisis del problema
Una forma sencilla de resolver el problema es tener en cuenta que siempre el producto de
dos números positivos cualesquiera coincide con el producto del máximo común divisor por
el mínimo común múltiplo. Con lo que modificando el problema anterior, se obtiene el
mínimo común múltiplo. Otra manera también sencilla de resolverlo es tomar el mínimo
común múltiplo como el mayor de los dos números, y mediante un bucle que itere mientras
que los números dados no dividan al mínimo común múltiplo hacer incrementar en una
unidad el mínimo común múltiplo.
10.
Escribe un programa que presente los valores de la función seno(2x)-x para
igual a 0, 0.5, 1.0, ...... 9.5, 10.
Análisis del problema
Se define la constante simbólica m como 10 y una «función en línea» f(x) (también llamada
una macro con argumentos). El bucle se realiza 21 veces; en cada iteración el valor de x se
incrementará en 0.5, se calcula el valor de la función y se escriben los resultados.
11.
Escribir un programa que calcule y visualice el más grande, el más pequeño y la
media de n números (n>O). El valor de n se solicitará al principio del programa y los
números serán introducidos por el usuario.
Análisis del problema
Pág. 3/9
I.E.S. Iliberis Atarfe 03/04
Fundamentos de Programación
Tema 5. Relación I
Primeramente se lee el número n en un bucle do while que valide que es positivo.
Posteriormente se lee el primer número de la serie, y se inicializa el mayor, el menor y la
media a ese número. Un bucle for va leyendo el resto de los números, y mediante la
técnica voraz (el mejor de todos es o el mejor de todos los anteriores o es el que acabo de
leer) se recalculan los nuevos mínimo y máximo, y a la vez se acumula en media el último
valor leído. Al final se escriben los resultados y la media que es la suma obtenida en la
variable media divido por n.
12.
Un número perfecto es un entero positivo, que es igual a la suma de todos los
enteros positivos (excluido el mismo) que son divisores del numero. El primer número
perfecto es 6, ya que los divisores de 6 son 1, 2, 3 y 1 + 2 + 3 = 6. Escribir un programa
que lea un entero positivo n y decida si es perfecto.
Análisis del problema
Se lee el número n en un bucle validando la entrada. Posteriormente un bucle for, prueba
todos los posibles candidatos a divisores menores que n (basta con empezar en 1 y avanzar
de uno en uno hasta llegar a n-1 ). Podría mejorarse el bucle llegando sólo a la raíz
cuadrada de n). Estos divisores se van acumulando en un acumulador, para al final del bucle
comprobar la condición de perfecto y dar el mensaje correspondiente.
13.
El valor de ex se puede aproximar por la suma
1+ x +
x2 x3
xn
+ + ... +
2! 3!
n!
Escribir un programa que tome un valor de x como entrada y visualice la suma para cada
uno de los valores de 1 a 100
14.
El matemático italiano Leonardo Fibonacci propuso el siguiente problema.
Suponiendo que un par de conejos tiene un par de crías cada mes y cada nueva pareja
se hace fértil a la edad de un mes. Si se dispone de una pareja fértil y ninguno de los
conejos muere. ¿Cuántas parejas habrá después de n años. Mejorar el problema
calculando el número de meses necesarios para producir un número dado de parejas de
conejos.
Pág. 4/9
I.E.S. Iliberis Atarfe 03/04
Fundamentos de Programación
Tema 5. Relación I
Análisis del problema
Para resolver el problema, basta con observar que en cada mes el número de parejas
fértiles, coincide con la suma de las parejas fértiles que había en los dos meses
inmediatamente anteriores, con lo que para obtener el resultado, basta con usar una
variable auxiliar aux en la cual se suman los dos valores que teníamos en los dos meses
anteriores, para actualizar de nuevo los valores de los nuevos meses de acuerdo con lo
indicado. El programa lee primeramente un número n positivo. Inicializa f1 y f2 con los
valores 1, para posteriormente en un bucle for de uno en uno y comenzando por el valor 2,
hacemos aux= f1 + f2, f1 = f2 y f2=aux (f1 es el mes anterior y f2 es el actual). Para
mejorar la solución pedida, basta con leer el número de parejas, y entrar en un bucle while
controlado en este caso por la condición ser menor que np y realizar la misma operación
que se hizo en el bucle for. Al final se escribe el valor de la variable i que va contando el
número de iteraciones.
15.
Determinar si un número dado leído del teclado es primo o no. (tema 1)
Análisis del problema
Un número positivo es primo, si sólo tiene por divisores el uno y él mismo. Teniendo en
cuenta que si hay un número i que divide a otro n menor que la raíz cuadrada de n,
entonces hay otro que también lo divide que es mayor que la raíz cuadrada de n; se tiene
que basta con comprobar los posibles divisores menores o iguales que la raíz cuadrada del
número dado. El programa se realizará con un solo bucle, en el cual se van comprobando los
posibles divisores, siempre y cuando no se haya encontrado ya algún divisor anterior, o no
se tenga que controlar ningún otro divisor. Se lee primeramente el valor de n, validando
que sea positiva, y posteriormente se realiza con otro bucle lo expuesto anteriormente.
16.
Calcular la suma de la serie 1/1 + 1/2 + ... + 1/n donde n es un número que se
introduce por teclado.
Análisis del problema
Para realizar la suma de la serie, basta con acumular en una variable s los distintos valores
de los términos t = 1/i. Previamente se lee el valor del número de términos n validando la
Pág. 5/9
I.E.S. Iliberis Atarfe 03/04
Fundamentos de Programación
Tema 5. Relación I
entrada y posteriormente con un bucle for controlado por la variable i se va realizando la
correspondiente acumulación.
17.
Calcular la suma de los términos de la serie: 1/2 + 2/22 + 3/23 + ... + n/2n.
Análisis del problema
Para realizar la suma de la serie, basta con acumular en una variable s los distintos valores
de los términos t = i / 2 i. Previamente se lee el valor del número de términos n validando
la entrada, y posteriormente se realiza la acumulación mediante un bucle for.
18.
Encontrar un número natural n más pequeño tal que la suma de los n primeros
números naturales exceda de una cantidad introducida por el teclado máximo.
Análisis del problema
Primeramente se lee el valor de la cantidad introducida por teclado máximo validando la
entrada. Posteriormente se acumula la serie dada por los distintos números naturales,
hasta que se exceda el valor introducido. Esto se realiza mediante un bucle for cuya salida
viene dada precisamente por el valor s>= maximo.
19.
Escribe un programa que lea un número entero positivo y calcule su factorial,
mediante un for, un while y mediante un do while.
Análisis del problema
En primer lugar se lee el valor del número n1, mediante una sentencia de while validando el
dato
para
posteriormente
escribir
los
tres
bucles,
con
sus
correspondientes
inicializaciones.
20.
Encontrar el número mayor de una serie de números introducidos por teclado.
Análisis del problema
Comenzar pidiendo el primer número que será distinto de -1. Posteriormente se lee la
serie de números. El fin de la entrada de datos viene dado por el valor de -1. El cálculo del
máximo se realiza en el cuerpo de un segundo bucle controlado por el valor -1 mediante la
Pág. 6/9
I.E.S. Iliberis Atarfe 03/04
Fundamentos de Programación
Tema 5. Relación I
técnica, «el mayor de todos hasta el último leído coincide con el mayor del último número
que he leído o bien coincide con el mayor de todos los que leí anteriormente».
21.
Calcular todos los números de tres cifras tales que la suma de los cubos de las
cifras es igual al valor del número
Análisis del problema
La solución se plantea mediante un bucle que recorre todos los números de tres cifras. En
cada iteración del bucle, se calcula cada una de las cifras del número y se comprueba la
condición, en cuyo caso se escribe. Si el número i = c3c2c1 entonces la condición indicada es
i = c1*c1 + c2*c2 + c3*c3. Para calcular las cifras, basta con usar el cociente y la división
entera.
22.
Diseñar e implementar un programa que cuente el número de sus entradas que
son positivas, negativas y cero.
23.
Diseñar e implementar un programa que extraiga valores del flujo de entrada
estándar y a continuación visualice el mayor y el menor de esos valores en el flujo de
salida estándar. El programa debe visualizar mensajes de advertencias cuando no
tenga entradas.
24.
Diseñar e implementar un programa que solicite al usuario una entrada como un
dato tipo fecha y a continuación visualice el número del día correspondiente del año.
Ejemplo, si la fecha es 30 12 1999, el número visualizado es 364.
25.
Un carácter es un espacio en blanco si es un blanco ( ' ' ), una tabulación ( ‘\t’ ),
un carácter de nueva línea ( '\n' ) o un avance de página ( '\f ' ). Diseñar y construir
un programa que cuente el número de espacios en blanco de la entrada de datos.
26.
Escribir un programa que lea una temperatura en grados Celsius e imprima el
equivalente en grados Fahrenheit.
27.
Escribir un programa que convierta: (a) centímetros a pulgadas; (b) libras a
kilogramos.
Pág. 7/9
I.E.S. Iliberis Atarfe 03/04
Fundamentos de Programación
28.
Tema 5. Relación I
Escribir un programa que lea 3 enteros positivos dia, mes y agno y a
continuación visualice la fecha que represente, el número de días, del mes y una frase
que diga si el año es o no bisiesto. Ejemplo, 4/11/1999 debe visualizar 4 de noviembre
de 1999. Ampliar el programa de modo que calcule la fecha correspondiente a 100 días
más tarde.
29.
En una empresa de computadoras, los salarios de los empleados se van a
aumentar según su contrato actual:
Contrato
Aumento %
0 a 9.000 dólares
20
9.001 a 15.000 dólares
10
15.001 a 20.000 dólares
5
más de 20.000 dólares
0
Escribir un programa que solicite el salario actual del empleado y calcule y visualice el
nuevo salario.
30.
La constante pi (3.141592 ...) es muy utilizada en matemáticas.
Un método sencillo de calcular su valor es:
 2 4 6
Pi = 4. . . ........
 3 57
Escribir un programa que efectúe este cálculo con un número de términos especificados
por el usuario.
31.
Escribir un programa que visualice un cuadrado mágico de orden impar n,
comprendido entre 3 y 11; el usuario elige el valor de n. Un cuadrado mágico se
compone de números enteros comprendidos entre 1 y n2. La suma de los números que
figuran en cada línea, cada columna y cada diagonal son idénticos. Un ejemplo es:
Pág. 8/9
8
1
6
3
5
7
I.E.S. Iliberis Atarfe 03/04
Fundamentos de Programación
4
9
Tema 5. Relación I
2
Un método de construcción del cuadrado consiste en situar el número 1 en el centro de la
primera línea, el número siguiente en la casilla situada encima y a la derecha, y así
sucesivamente. Es preciso considerar que el cuadrado se cierra sobre sí mismo: la línea
encima de la primera es de hecho la última y la columna a la derecha de la última es la
primera. Sin embargo, cuando la posición del número caiga en una casilla ocupada, se elige
la casilla situada debajo del número que acaba de ser situado. Posteriormente veremos una
solución con arrays en el tema 7.
32.
Calcular la media de las notas introducidas por teclado con un diálogo
interactivo semejante al siguientes:
¿Cuántas notas? 20
Nota 1 : 7.50
Nota 2: 6.40
Nota 3: 4.20
..........
Nota 20: 9.50
Media de éstas 20: 7.475
33. Contar el número de enteros negativos introducidos en una línea.
Pág. 9/9
I.E.S. Iliberis Atarfe 03/04
Descargar