Diciembre 2020

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

Asignatura / Gaia: INFORMÁTICA Curso / Kurtsoa: 1º

Nombre / Izena: Fecha / Data: 12/12/2020

ESTE ES EL DIRECTORIO QUE SE LE VA A RECOGER AL TERMINAR EL EXAMEN, ASÍ QUE TODO LO


QUE HAGA DEBE QUEDAR GUARDADO AQUÍ. POR CADA EJERCICIO HAY UNA CARPETA DONDE
GUARDARÁ LA SOLUCIÓN A DICHO EJERCICIO.

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

valor=randi([1,10]) devolverá en valor un número aleatorio entero entre 1 y 10.


La cabecera de la función de este apartado será:
function sala=GenerarReservas(sala, numOcupadas, fname)
donde sala es la matriz que simula la sala de cine, numOcupadas es el valor numérico
que indica el número de asientos a ocupar, y fname es el nombre del fichero donde
vamos a guardar las reservas. Para poder visualizar el resultado también en formato
matriz, la función devolverá la sala con las reservas realizadas, es decir, con 1’s en las
posiciones que se han generado aleatoriamente y que se han guardado en el fichero
generado.
Se recomienda partir de una sala vacía para ver si el número de reservas generadas es
correcto. A continuación se muestra un ejemplo del resultado de esta función, siendo
el número de reservas 11.

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.

Matriz original Matriz con desplazamiento

La cabecera de la función a programar sería la siguiente:


function M= Desplazar (M)
donde el argumento de entrada es una matriz de números enteros positivos (M)
y como argumentos de salida se devuelve la misma matriz desplazada (M).
IMPORTANTE: No se podrá utilizar un vector o una matriz auxiliar para realizar el
desplazamiento de los elementos de la matriz. En caso de hacerlo, la puntuación del
apartado será 0.
b) (1 punto) Utilizando la función programada en el apartado anterior, calcular el número
de desplazamientos necesarios para obtener la suma máxima de los elementos de la
diagonal principal. A continuación, se muestra un ejemplo.

Matriz original Matriz desplazada


numDespl =8
suma_diagonal=21

También podría gustarte