Diciembre 2020
Diciembre 2020
Diciembre 2020
C:\Temp\MatlabDiciembre2020
NO SE PODRÁN UTILIZAR FUNCIONES DE MATLAB COMO POR EJEMPLO MIN, MAX, MEAN,
SUM, SORT, PROD, NUM2DIGITS, FIND. TAMPOCO PODRÁ USAR EL OPERADOR : PROPIO DE
MATLAB PARA SUSTITUIR UN BUCLE.
RECUERDE QUE LOS EJEMPLOS MOSTRADOS EN EL ENUNCIADO TIENEN LA FINALIDAD DE
COMPRENDER MEJOR EL PROBLEMA PERO QUE EL PROGRAMA A DESARROLLAR TIENE QUE
SER GENERAL.
EJERCICIO 1 (7 PUNTOS)
Los cines de Urbil quieren mejorar el programa que gestiona las salas de cine por lo que nos han
pedido que programemos los siguientes apartados. Se programarán todos los apartados en el
fichero mainEj1.m proporcionado en la carpeta del examen:
A) (1 punto) Programar una función que lea la información del fichero llamado ‘Sala.txt’
que contiene las reservas realizadas online. Este fichero contiene la fila y la butaca
reservada. Con la información de este fichero se creará una matriz en la que aparezcan
0’s en las butacas vacías y 1’s en las butacas ocupadas, y también se devolverá el número
de reservas realizadas.
El nombre de la función a programar será CargarReservas y la cabecera de la función se
deja a criterio del alumno.
En el fichero mainEj1 se proporcionan dos variables para indicar el tamaño que tendrá
la sala. Puede modificar estos valores para comprobar que el ejercicio funciona
correctamente.
B) (1,5 puntos) Para poder hacer pruebas con nuestro programa, queremos programar una
función que nos permita crear ficheros de reservas similares al fichero ‘Sala.txt’ utilizado
en el apartado anterior. El fichero resultado se llamará ‘Reservas.txt’.
Para ello, nos propocionarán un valor entero indicando el número de reservas a realizar
y la función a programar generará números aleatorios de filas y butacas.
Para generar los números aleatorios usaremos la función de Matlab randi que devuelve
un número aleatorio entero entre un rango de valores.
num=randi([valorInicial, valorFinal]), donde valorInicial y valorFinal indican el
rango de valores entre los cuales se quiere generar al número aleatorio, y el argumento
de salida (num) será el número aleatorio generado. Por ejemplo:
2
C) (2 puntos) Para que la aplicación sea más amigable para el usuario final, se quiere
mostrar la sala de cine mediante una imagen en la que las butacas ocupadas se dibujarán
en rojo y las libres en verde. Para ello, nos proporcionan dos imágenes: ‘libre.png’ y
‘busy.png’.
La cabecera de la función será:
function cine2D=DibujarCine (sala, ocupada, libre)
donde sala es la matriz que simula una sala de cine con 0’s para indicar que un asiento
está libre y 1’s para asientos ocupados. Los parámetros ocupada y libre son las
hipermatrices resultantes de leer los ficheros ‘libre.png’ y ‘busy.png’.Esta función
devolverá una hipermatriz (cine2D) tal y como se muestra en la siguiente figura.
La imagen resultante se guardará en un fichero llamado ‘Cine2D.jpg’.
Puede hacer la prueba con la sala de cine obtenida en el apartado A o generar una matriz
de 0’s y 1’s.
3
El siguiente paso para mejorar nuestro programa es gestionar varias salas de cine para lo cual se
pide crear la siguiente estructura de datos con la información del fichero ‘InfoSalas.txt’, que nos
indica el tamaño de cada una de las salas.
D) (1 punto) Programar una función que dado el fichero ‘InfoSalas.txt’, cree la estructura
de datos mostrada en la figura, rellenando los campos sala, totalButacas y
ButacasLibresTotal. Inicialmente el campo sala será una matriz de 0’s. La cabecera se
deja a criterio del alumno.
E) (1,5 puntos) Una vez creado el vector de estructuras, queremos cargar las reservas
realizadas para cada una de las salas, leyendo la información de los ficheros que se
encuentran en la carpeta del examen. Los nombres de las ficheros que contienen las
reservas tendrán la misma estructura, comenzarán con el string Sala y le seguirá un
número que hará referencia al número de sala, finalmente se le añadirá la extensión txt.
Ejemplo: Sala1.txt, Sala2.txt y así sucesivamente.
El código a realizar deberá contemplar el hecho de que se puede ampliar el número de
salas por ejemplo a 100, así que deberá funcionar para cualquier número de salas.
La solución a este apartado se programará en el fichero main. No es necesario crear una
función.
4
EJERCICIO 2 (3 PUNTOS)
a) (2 puntos) Programar una función que dada una matriz cuadrada de números enteros
positivos, desplace sus elementos una columna hacia la izquierda.
En la siguiente figura, se muestran dos ejemplos para comprender el resultado que se
debería obtener.