Está en la página 1de 1

EXAMEN DE TEORÍA DE INTRODUCCIÓN A LA PROGRAMACIÓN

Grado en Ingeniería en Informática (18/enero/2018)

NOMBRE DNI GRUPO

APELLIDOS 1a 1b 2a 2b 2c 2d 2e 3

1. Una meseta es una subsecuencia de enteros consecutivos iguales.

a) (2 puntos) Diseñe un algoritmo que accediendo sólo una vez a cada elemento de una secuencia S de enteros del primer modelo
de acceso secuencial, determine el número de mesetas de longitud mayor o igual que 2. Por ejemplo, dada la secuencia de enteros
S = 31 31 31 45 22 22 33 15 15 15 15, la solución es 3 (correspondiente con las mesetas [31 31 31] [22 22] y [15 15 15
15]).

b) (2 puntos) Diseñe una función ExisteParMúltiplode3 que teniendo como parámetro de entrada una secuencia de enteros S del
segundo modelo de acceso secuencial, devuelva un valor booleano verdadero si en la secuencia S existe al menos un número que
sea par y múltiplo de 3, y falso en caso contrario. Por ejemplo, dada la secuencia de enteros S = 31 31 31 45 22 22 33 15 15
15 15, la solución es falso. Dada la secuencia de enteros S = 31 18 33 15 15, la solución es verdadero (18 es par y múltiplo de
3).

2. (5 puntos) En un hospital se disponen de M módulos con H habitaciones cada uno, y dos camas por habitación.

a) (0,2 puntos) Defina el tipo MóduloHospital. Debe ser un tipo de datos que tenga como dominio los identificadores de M
módulos de un hospital.

b) (0,3 puntos) Defina el tipo HabitacionesMóduloHospital. Debe ser un tipo de datos que tenga como dominio los
identificadores de H habitaciones de un módulo de un hospital.

c) (0,5 puntos) Defina el tipo CamasHospital. Debe ser un tipo adecuado para representar el uso de las camas de un hospital.
Este tipo debe definirse de forma tal que si se dispone de una variable de este tipo, a través de esa variable debe ser posible
conocer si cada una de las dos camas de cada habitación de cada módulo del hospital está o no ocupada.

d) (2 puntos) Defina la función NumMódulosLlenos. Esta función tiene un parámetro de entrada de tipo CamasHospital y
devuelve un valor entero que indica el número de módulos llenos, es decir, el número de módulos que tienen todas sus
habitaciones ocupadas.

e) (2 puntos) Defina la función MóduloMásOcupado. Esta función tiene un parámetro de entrada de tipo CamasHospital y
devuelve un valor de tipo MóduloHospital con el identificador de módulo que más camas tiene ocupadas. En el caso de
existir más de un módulo que cumpla esta condición, la función devolverá el primero que encuentre.

3. (1 puntos) Se define la siguiente sucesión por recurrencia:

a0=1

a1=2

a2=3

an=3an-1 – 2an-3 n>2

Escriba un algoritmo que calcule el valor de n más pequeño tal que an es superior a un entero M ≥ 0 dado como dato de entrada al
problema.

Nota. En la resolución de cada ejercicio se valorará particularmente la correcta identificación del tipo de problema y la elección y
aplicación del esquema algorítmico adecuado a cada caso, así como la sencillez y eficiencia de la solución propuesta.