Practicas FI 1819 - P05 Enu v01

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Departamento de

Ingeniería de Sistemas y Automática

Fundamentos de Informática curso 18/19


P5 Control de flujo (1)
P5-1: Suma de valores positivos (uso de for, if, variable acumulador) ()
Realizar un programa que pida 10 números enteros y calcule la suma de los valores positivos.

P5-2: Número de veces divisible (uso de while, variable contador) ()


Realizar un programa que pida un número entero y nos indique cuántas veces es divisible entre 2. Por ejemplo,
si introducimos el 24 nos debe decir que es 3 veces divisible entre 2.

P5-3: Proceso iterativo (Conjetura de Collatz, variable contador) ()


Realizar un programa que lea del teclado un número entero positivo. Si es par lo divide entre 2, y si es impar, lo
multiplica por 3 y a continuación suma 1. Repetir el proceso hasta que se obtenga un 1 como resultado. El
programa nos indicará el número de valores generados.

P5-4: Cálculo de una serie (variable acumulador) ()


1 1 1
Realizar un programa que calcule el desarrollo 2 + 2 + 2 + ⋯ despreciando todos los términos siguientes a
1 2 3
aquel cuyo valor absoluto sea menor que 10 . El programa debe comprobar que dicha serie aproxima a  /6. El
-6 2

número  se puede obtener con la expresión acos(-1), donde la función acos() está definida en la librería
matemática (debes añadir la línea #include <cmath> al comienzo de tu código).
2
P5-5: Calcular numéricamente la integral definida de la función f(x)=x entre dos límites dados por el
usuario ()
La idea es aproximar la integral mediante la suma de rectángulos de base pequeña. En la figura se muestra un
ejemplo con límites de integración [2.0,5.0] y 10 rectángulos. El programa debe pedir al usuario los límites inferior
inf y superior sup y el número de rectángulos num de igual base que desean utilizarse para realizar la
aproximación numérica a la integral.
Si inf≥sup el programa debe advertirlo y volver a pedir ambos límites (tantas veces como sea necesario). Por
otro lado, si el número de rectángulos introducido es inferior a 20, el programa seleccionará automáticamente
num=20.
Al finalizar los cálculos, el programa debe mostrar el resultado obtenido, el valor real de la integral 𝑥 3 /3 entre
esos límites y el error de aproximación cometido. Luego preguntará al usuario si desea repetir el cálculo para
otros límites y número de rectángulos. En caso afirmativo repetirá todo el proceso, y así indefinidamente mientras
el usuario lo desee.

Pág. 1 de 3

Universidad de Valladolid. Escuela de Ingenierías Industriales

Paseo del Cauce, 59. – 47011 Valladolid – [email protected]

www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

P5-6: Adivinar un número pensado por el usuario ()


Se pide construir un programa que permita adivinar un número (entero) pensado por el usuario, entre
valor_minimo=0 y valor_maximo=1000000. Aplicando el método de búsqueda de bisección, calculará el valor
intermedio entre estos límites, lo mostrará al usuario y preguntará si el número que ha pensado es superior,
inferior o igual:
 Si es superior, el programa adoptará el valor intermedio como nuevo límite inferior y repetirá el proceso
 Si es inferior, adoptará el valor intermedio como nuevo límite superior y repetirá el proceso.
Y así indefinidamente, hasta que adivine el número.
Como medida de protección ante respuestas incorrectas del usuario, puede implementarse un contador que dé
por finalizado el programa cuando se ha superado el número máximo de preguntas que cabe esperar.
El método de bisección, también conocido como búsqueda binaria o búsqueda dicotómica, es un método de
búsqueda extraordinariamente eficiente porque en cada iteración el espacio de búsqueda se divide entre dos.
6
Así, un número entre 0 y 10 será adivinado en un máximo de 20 preguntas, ya que 20 es el primer entero para
20 6 n
el que 2 >10 . En general, necesitaremos como mucho n preguntas para adivinar un número entre 0 y 2 .
Úsese const para la constante max_num_respuestas (20). Así, const int max_num_respuestas=20;
declara a la variable max_num_respuestas como constante en el ámbito en que está declarada. Es una buena
práctica de programación declarar como constantes aquellas variables que efectivamente lo sean.

P5-7: Transformación de un número entero en base b (1<b<=10) de N dígitos a base decimal ()
El programa deberá:
1. Solicitar la base b del número a introducir
 Si la base b elegida es mayor que 10 o menor que 2, lanzad un mensaje de error, volviendo a solicitar b.
2. Solicitar el número de dígitos N del número en base b.
 Si el número de dígitos N es mayor que 10 o menor que 1, avisar con un mensaje de error, volviendo a
solicitar el número de dígitos.
3. Solicitar una a una las N cifras (valores 0,1,2,…,b-1) del número en base b, comenzando por la más
significativa, de tal forma que según se introduce cada cifra:
 Si la cifra 𝑐𝑖𝑓𝑟𝑎𝑖 , (𝑖 ∈ {𝑁 − 1, 𝑁 − 2, … ,2,1,0} introducida no está en el rango [0,b-1] se avisará al usuario
con un mensaje de error, volviendo a solicitar la cifra.
 En caso contrario, se añadirá el término 𝑐𝑖𝑓𝑟𝑎𝑖 ∗pow(b,i)a un acumulador.
4. Mostrar por pantalla el equivalente decimal, que será el valor obtenido en el acumulador.
P5-8: Dado un número entero, mostrarlo por pantalla “al revés” y calcular cuantos dígitos mayores que 5
tiene ()
Tras solicitar al usuario un número entero, lo mostrará al revés y calculará cuantos dígitos mayores que 5 tiene.
Por ejemplo, si introducimos -136549 las respuestas serán -945631 y 2. Si introducimos 4234, las respuestas
serán 4324 y 0.
Se sugiere ir obteniendo iteradamente los dígitos desde el menos significativo al más significativo usando el
operador división entera %. Realízalo en un papel con un ejemplo para identificar los pasos que se deben dar
tanto para extraer los dígitos como para ir construyendo el número “al revés”. Véase qué pasos se deben repetir
y qué variables se deben actualizar y cómo para obtener el resultado esperado.
Recordad que si el entero introducido sobrepasa los límites de representación (4 bytes) C++ lo truncará.
El programa se repetirá hasta que el usuario introduzca un 0.

Pág. 2 de 3

Universidad de Valladolid. Escuela de Ingenierías Industriales

Paseo del Cauce, 59. – 47011 Valladolid – [email protected]

www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

P5-9: Obtener los números primos y cuantos no primos están comprendidos entre dos números dados
()
Se pide realizar un programa que calcule cuantos números no primos existen comprendidos entre dos números
dados, ambos incluidos. Se mostrarán también los números primos obtenidos. El programa comprobará que el
primer número introducido es mayor que 1 y que el segundo número introducido es mayor que el primero,
solicitando indefinidamente la introducción de dos nuevos números en caso contrario.

Pág. 3 de 3

Universidad de Valladolid. Escuela de Ingenierías Industriales

Paseo del Cauce, 59. – 47011 Valladolid – [email protected]

www.eii.uva.es - www.uva.es/eii

También podría gustarte