0% encontró este documento útil (0 votos)
85 vistas11 páginas

Test1 - Enunciados - Anteriores UVA

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 11

Departamento de

Ingeniería de Sistemas y Automática

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO IA2


 La duración del Test es de 90 minutos.
 El código fuente se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.

Existe una forma de aproximar el factorial de un número entero mediante una función continua
utilizando la llamada fórmula de Stirling:

𝑙𝑛( 𝑛!) ≈ 𝑛 ∗ 𝑙𝑛(𝑛) − 𝑛

La anterior aproximación será mejor, a mayores valores de n. Se pide comprobar la validez de la


anterior afirmación, haciendo un programa en C++ que calcule el factorial de un numero entero n que
debe ser introducido por teclado y que calcule los miembros izquierdo y derecho de la anterior
ecuación utilizando la función log() de la biblioteca matemática (#include <cmath>) para sacar por
𝑒
pantalla ambos valores, así como el error absoluto y relativo (𝑒𝑟𝑒𝑙 = | 𝑎𝑏𝑠⁄𝑣𝑎𝑙𝑜𝑟 |) que se comete.
𝑒𝑥𝑎𝑐𝑡𝑜
Tanto el error absoluto como relativo deben darse como valores positivos, para lo que se puede usar la
función fabs(). El programa deberá asegurarse que el valor entero dado por el usuario sea positivo,
volviendo a preguntar el mismo cuántas veces sea necesario si se introduce un valor negativo o cero.
El factorial exacto (n!) deberá calcularse utilizando una función con el prototipo que se muestra. Nótese
que, aunque el factorial se define para los enteros, la función devuelve un tipo de dato double para
aumentar la capacidad de almacenamiento, puesto que se sabe que el factorial crece muy
rápidamente con el valor de n.

double factorial(int);

Ejemplo:
Valor de n ln(n!) n*ln(n)-n Error absoluto Error relativo
10 15.1044 13.01259 2.07856 0.137613
100 363.739 360.517 3.22236 0.00885897

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO EAI1


 La duración del Test es de 70 minutos.
 El código fuente se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.

Realizar un programa en C++ que determine si un número natural es triangular.

Un número natural 𝑇𝑛 es triangular si cumple:


𝑛

𝑇𝑛 = ∑ 𝑖
𝑖=1

El valor 𝑇𝑛 puede verse como el número de puntos


que tiene el triángulo equilátero asociado, siendo 𝑛 el
número de puntos del lado (ver figura).

El programa deberá:
1. Solicitar un número entero 𝑁.
2. Si 𝑁 > 0:
 Determinar si es triangular, 𝑁 = 𝑇𝑛 . Nótese que 𝑛 ≤ 𝑇𝑛 .
Si es triangular, se mostrará por pantalla el mensaje 𝑁 𝑒𝑠 𝑡𝑟𝑖𝑎𝑛𝑔𝑢𝑙𝑎𝑟 y se incrementará
un contador que reflejará la cantidad de números triangulares introducidos hasta el
momento.
 Volver al punto 1.
3. Si 𝑁 ≤ 0 mostrar por pantalla la cantidad de números triangulares introducidos y dar por
finalizado el programa.

Para resolver el problema deberá utilizarse una función int triangular(int n); que
devuelva el valor 𝑇𝑛 .

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO E


 La duración del Test es de 90 minutos.
 El código fuente se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.

En la tienda de los hermanos Roque es tradicion presentar las latas de conserva apiladas triangularmente: en el
último piso una lata, en el siguiente piso debajo dos latas y asi sucesivamente. Por ejemplo, seis latas se ponen
asi:

*
**
***

Los hermanos tienen grandes problemas para realizar los pedidos de latas, ya que no todo número de latas se
puede apilar triangularmente. Por ejemplo, 8 latas no se pueden apilar.

Realice un programa en C++ en el que dado un número natural introducido por el usuario (en este caso el
número de latas), se comprueba y se informa a través de un mensaje si es adecuado para apilar. Si es posible
hágalo, también se pide que se dibuje un triangulo rectangulo por medio de asteriscos para visualizar la
colocación de las latas, indicando la altura correspondiente.
La parte del programa asociada al dibujo del triángulo debe utilizar una función con prototipo
void imprime_linea (int n) que se encarga de imprimir una linea de asteriscos de una determinada
longitud n.

A continuación se muestra un ejemplo de ejecución (en negrita lo introducido por el usuario):

Ejemplo 1:

Introduce el numero de latas: 10


Se pueden apilar las 10 latas en una colocacion triangulo
La altura de la estructura es de 4 latas

*
**
***
****

Ejemplo 2:

Introduce el numero de latas: 12


Las 12 latas no se pueden apilar en una colocación triangulo.

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO M1


 La duración del Test es de 90 minutos.
 El código fuente se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.

En la tienda de los hermanos Roque es tradicion presentar las latas de conserva apiladas triangularmente: en el
último piso una lata, en el siguiente piso debajo dos latas y asi sucesivamente. Por ejemplo, seis latas se ponen
asi:

*
**
***

Los hermanos tienen grandes problemas para realizar los pedidos de latas, ya que no todo número de latas se
puede apilar triangularmente. Por ejemplo, 8 latas no se pueden apilar.

Realizar un programa en C++ en el que dado un número natural introducido por el usuario (en este caso el
número de latas), se comprueba y se informa a través de un mensaje si es adecuado para apilar. Si es posible
hacerlo, también se pide que se dibuje un triangulo rectangulo por medio de asteriscos para visualizar la
colocación de las latas, indicando la altura correspondiente.
La parte del programa asociada al dibujo del triángulo debe utilizar una función con prototipo
void imprime_linea (int n) que se encarga de imprimir una linea de asteriscos de una determinada
longitud n.

A continuación se muestra un ejemplo de ejecución (en negrita lo introducido por el usuario):

Ejemplo 1:

Introduce el numero de latas: 10


Se pueden apilar las 10 latas en una colocacion triangulo
La altura de la estructura es de 4 latas

*
**
***
****

Ejemplo 2:

Introduce el numero de latas: 12


Las 12 latas no se pueden apilar en una colocación triangulo.

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO IM2


 La duración del Test es de 90 minutos.
 El fichero fuente *.cpp se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.

Realizar un programa en C++ que lea la longitud de tres lados (de tipo entero) y determine si
pueden formar un triángulo (un lado de longitud mayor que la suma de los otros dos lados) o
no. Si pueden formar triángulo se debe determinar si el triángulo puede ser equilátero (tres
lados iguales), isósceles (2 lados iguales) o escaleno (tres lados distintos). Además deberá
determinar si el triángulo puede ser rectángulo (cuadrado de un cateto es igual a la suma de
los otros dos). Una vez mostrado el resultado el programa preguntará si se quiere ejecutar de
nuevo el programa con tres nuevos lados y en caso contrario el programa finalizará. Se
realizará el control necesario para que las longitudes introducidas sean positivas.
El programa deberá:
1. Solicitar al usuario las longitudes de tres lados (tipo entero). Si alguno de las longitudes es
menor que cero volverá a solicitar las tres longitudes.
2. Determinará si los lados pueden formar triángulo o no mostrándolo por pantalla. Para que
puedan formar triángulo un lado debe tener una longitud mayor que la suma de los otros
dos lados.
3. Si pueden formar triángulo determinará mostrándolo por pantalla si el triángulo puede ser
equilátero, isósceles o escaleno. Además mostrará por pantalla si el triángulo es
rectángulo o no. Para el cálculo de si el triángulo es rectángulo se deberá utilizar la
función int es_rectangulo(int,int,int) que devolevera 1 si el triángulo es
rectángulo y 0 si no lo es.
4. Se preguntará al usuario si quiere repetir el programa en cuyo caso se volverá al 1. Para
volver a solicitar las longitudes.
Ejemplo de ejecución:

Pág. 1 de 2

Universidad de Valladolid. Escuela de Ingenierías Industriales

Paseo del Cauce, 59. – 47011 Valladolid – trespa@eii.uva.es

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

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO M3


 La duración del Test es de 100 minutos.
 El fichero fuente *.cpp se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.

Se trata de realizar un programa en C++ que calcule el valor del número PI mediante dos aproximaciones
distintas (Wallis y Madhava-Leibniz).

La ejecución del programa debe seguir los siguientes pasos:


-x
1. Solicitar la precisión con la que se quiere calcular el número PI. La precisión será del orden de 10. .

Para ello debe usar una función de prototipo double introduza_precision (void).
-x
Dicha función debe devolver el valor de la precisión (10. ). Para ello solicitará al usuario el valor del
exponente (x), asegurándose que dicho valor esté comprendido entre 1 y 7. Use la función pow para calcular
la precisión a partir del valor del exponente.

2. Calcular y mostrar el valor del número PI con la precisión indicada para ambas aproximaciones, indicando el
número de términos usado en cada caso. Recuerde que puede calcular el valor exacto de PI usando el arco
coseno de -1, acos(-1.).

Independientemente de la precisón elegida, debe mostrar los valores de PI con 7 cifras decimales, para ello
recuerde escribir la sentencia cout.precision(8), al principio de la función main.

3. Preguntar al usuario si desea repetir los cálculos. Si desea repetir, vuelva al punto 1, si no, finalice la
ejecución del programa.

Las fórmulas de cálculo a utilizar son:

 Wallis:

 Madhava-Leibniz:

En la parte trasera de la hoja se muestra un ejemplo de ejecución.

Pág. 1 de 4

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

Pág. 2 de 4

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO OI


 La duración del Test es de 90 minutos.
 El código fuente se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.

Realizar un programa en C++ que calcule el valor de la serie convergente: suma de


los recíprocos de los números triangulares:

1 1 1 1 1 1
+ + + + + +⋯=2
1 3 6 10 15 21

Un número triangular es aquel que puede recomponerse en la forma de un triángulo


equilátero. Cada número triangular Tn está definido por la siguiente fórmula:

𝑛(𝑛 + 1)
𝑇𝑛 =
2

El programa debe cumplir los siguientes requisitos:


1. Hacer uso de una función con prototipo int triangular(int n) que
devuelva como valor de retorno el cálculo del número triangular Tn dado el valor de n pasado como
argumento.
2. Deberá pedir la precisión deseada en el cálculo y que esta sea positiva, volviendo a solicitarla
repetidamente mientras no lo sea.
3. Deberá sumar el número de términos necesario para que tenga la precisión deseada; es decir, el valor
calculado debe cumplir |𝑣𝑎𝑙𝑜𝑟 − 2| < 𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛, donde se usará la función fabs de la librería matemática
para el cálculo del valor absoluto.
4. El programa deberá mostrarnos el valor calculado de la serie así como el número de términos utilizados.

A continuación se muestra un ejemplo de ejecución (en negrita lo introducido por el usuario):

Suma reciprocos numeros triangulares

Precision deseada: -2
Error. Debe ser positiva
Precision deseada: 1e-3

Valor de la serie: 1.999


Numero de terminos utilizados: 1999

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO Q11


 La duración del Test es de 90 minutos.
 El código fuente se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.


Se sabe que la serie  an  br
n 0
n
converge si la razón r es tal que |r|<1.


 an  br
b ar
En tal caso se tiene que
n
  (Valor exacto )
n 0 1  r 1  r 2
Se pide comprobar que la suma de un número finito de términos aproxima con un error el valor de la serie.
Para ello se realizará un programa en C++ que calcule el valor de la serie con un error proporcionado por el usuario.

El programa debe:
1. Solicitar los valores de a, b (números reales).
2. Solicitar el valor de r. Su valor absoluto debe ser menor que 1. En caso contrario lo volverá a pedir.
3. Solicitar el valor del error_admisible. Su valor absoluto debe ser menor que 0.01. En caso contrario lo
volverá a pedir.
4. Calcular el valor de la serie de manera que el error_cometido sea menor que el error_admisible.
error_cometido=|Valor exacto – Valor calculado|
5. Presentar por pantalla el valor calculado, el valor exacto, el número de términos empleado y el error
cometido.
Se precisa el uso de las funciones matemática pow(x,y) (xy) y abs(x) (|x|). Para ello se incluirá #include<cmath>.

Para alcanzar la máxima puntuación en el test, se debe emplear una función con prototipo
double pide_valor(double) en los puntos 2 y 3.

A continuación se muestran ejemplos de ejecución (en negrita lo introducido por el usuario):

constante a? 2 constante a? 2
constante b? 3 constante b? 3

razon r?. Valor absoluto menor que 1 0.4 razon r?. Valor absoluto menor que 1 2
el valor absoluto de r debe ser menor que 1
error admisible. Valor absoluto menor que 0.01 0.00001
razon r?. Valor absoluto menor que 1 0.4
valor aproximado 7.22222
valor exacto 7.22222 error admisible. Valor absoluto menor que 0.01 3
usando 18 el valor del error debe ser menor que menor que 0.01
error 4.61948e-006
error admisible. Valor absoluto menor que 0.01 0.000001

valor aproximado 7.22222


valor exacto 7.22222
usando 20
error 8.12417e-007

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO Q12


 La duración del Test es de 90 minutos.
 El código fuente se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.

Realizar un programa en C++ que calcule el valor de la serie convergente: suma de los recíprocos de las
potencias de 2 con signos alternados:

1 1 1 1 1 1 2
− + − + − +⋯ =
1 2 4 8 16 32 3

El programa debe cumplir los siguientes requisitos:


1. Hacer uso de una función con prototipo int pot2(int n) que devuelva como valor de retorno 2𝑛
dado el valor de n pasado como argumento. Se usará la función pow de la librería matemática para el
cálculo de la potencia.
2. Deberá pedir la precisión deseada en el cálculo y que esta sea positiva, volviendo a solicitarla
repetidamente mientras no lo sea.
3. Deberá sumar el número de términos necesario para que tenga la precisión deseada; es decir, el valor
calculado debe cumplir |𝑣𝑎𝑙𝑜𝑟 − 2⁄3| < 𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛, donde se usará la función fabs de la librería
matemática para el cálculo del valor absoluto.
4. El programa deberá mostrarnos el valor calculado de la serie así como el número de términos utilizados.

A continuación se muestra un ejemplo de ejecución (en negrita lo introducido por el usuario):

Suma reciprocos potencias de 2 con signos alternados

Precision deseada: -2
Error. Debe ser positiva
Precision deseada: 1e-3

Valor de la serie: 0.666016


Numero de terminos utilizados: 10

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii
Departamento de
Ingeniería de Sistemas y Automática

FUNDAMENTOS DE INFORMATICA CURSO 17/18 TEST 1 GRUPO TI


 La duración del Test es de 90 minutos.
 El código fuente se subirá a la Tarea denominada Test1 que aparece en el Campus Virtual.
 No se permite ningún tipo de material escrito, ni el uso de móviles, memorias USB, etc. Tampoco se puede acceder a las
soluciones de las prácticas propuestas en clase ni a otros ejercicios realizados por los alumnos.
 Durante la prueba se monitorizará el tráfico de datos.
 La realización fraudulenta del ejercicio supondrá la calificación de Suspenso 0,0 en la convocatoria ordinaria.

Realizar un programa en C++ que aproxime el número π por el método de Arquímedes.

El método de Arquímedes es una aproximación clásica (siglo III a. C.) al valor del número π por
defecto y por exceso a partir de polígonos regulares de n-lados inscritos y circunscritos
respectivamente en la circunferencia de radio unidad calculando sus perímetros 𝑏𝑖 y 𝑎𝑖 .

El método comienza con hexágonos, siendo por tanto 𝑏6 = 6 y demostrándose que 𝑎6 = 4√3, de modo
que se establece una primera aproximación: 6 < 2𝜋 < 6.92820324
Recursivamente se doblan el número de lados de los polígonos según las expresiones:
2𝑎 𝑏
𝑎2𝑛 = 𝑛 𝑛 ; 𝑏2𝑛 = √𝑎2𝑛 𝑏𝑛
𝑎𝑛 +𝑏𝑛
con lo que las aproximaciones por exceso y por defecto van convergiendo y siendo más precisas.
El programa deberá:
1. Establecer condiciones iniciales y presentarlas por consola.
2. Iterar y sacar por consola en líneas sucesivas la nueva aproximación de cada iteración, hasta que
la diferencia entre el perímetro de los polígonos circunscrito e inscrito sea menor que 1e-5.
3. Finalizar indicando el número de iteraciones que se han necesitado (considerando la primera la de
las condiciones iniciales) y el número de lados del polígono final.
Se utilizará para la salida por consola la función con argumentos 𝑏𝑖 y 𝑎𝑖 y con declaración:
void defectopiexceso(double, double);

que presentará las condiciones iniciales como: 3.00000 < pi < 3.46410
y en cada iteración presentará los nuevos valores por defecto y por exceso en ese mismo formato.

Universidad de Valladolid. Escuela de Ingenierías Industriales


Paseo del Cauce, 59. – 47011 Valladolid
www.eii.uva.es - www.uva.es/eii

También podría gustarte