#include #include /* Nos han pedido un pequeño programa escrito en C para controlar la afluencia de una sala de cine en la que las butacas se distribuyen en filas y asientos (los asientos serían las columnas). Para ello utilizaremos un array bidimensional que abarque toda la sala. El encargado nos ha dicho que la sala cuenta con 10 filas y 8 asientos por cada fila (el array tendrá una dimensión efectiva de 10 filas y 8 columnas). La manera de indicar si un asiento se encuentra libre o no, es mediante un número entero que tendrá valores: 0 → el asiento está vacío. 1 → el asiento está ocupado. A la hora de mostrar la ocupación de la sala en lugar de con 1 y con 0 lo haremos con los símbolos: O → el asiento está vacío. X → el asiento está ocupado. Así pues, cada vez que mostremos la sala, esta debe tener un aspecto similar al siguiente: X X X O O O O O X X O O O O O X X O O O X X O O X X O O O X … Y así con todas las filas. Al comienzo del programa la sala se encuentra con todas sus posiciones vacías. El programa debe asegurarse de ello al comienzo (al comienzo el array se carga con todas sus posiciones con valor 0). Para que el encargado de la sala pueda manejarla, se le presentará un menú con las siguientes opciones: 1. Comprar entrada. Se le pedirá que indique la fila y el asiento (columna) en el que se quiere sentar el espectador. Si ese asiento está ocupado se dará un mensaje de error. Si el asiento está libre, se cambia su posición a ocupado y se da un mensaje de “entrada comprada”. La fila y columna introducida deben ser válidas (entre 0 y su dimensión máxima), en caso contrario se mostrará un mensaje de error. 2. Mostrar la ocupación de la sala. Mostrará toda la sala y sus asientos indicando de la manera descrita cuales están ocupados y cuales están libres. 3. Devolver entrada. Se pedirá que indique la fila y el asiento (columna) que se quiere liberar. Si el asiento ya estaba libre, se indicará mediante un mensaje de error. Si el asiento estaba ocupado, éste se libera y se indica un mensaje de “asiento liberado”. La fila y columna introducida deben ser válidas (entre 0 y su dimensión máxima), en caso contrario se mostrará un mensaje de error. 4. Calcular recaudación de la sala. Se calculará la recaudación total de la sala teniendo en cuenta solo los asientos ocupados y que cada entrada tiene un valor de 5.5 €. 0. Salir. El menú se repetirá hasta que el encargado de la sala pulse la opción de salir. */ #define FILAS 10 #define ASIENTOS 8 int main(){ // Variables int sala[FILAS][ASIENTOS]={0}; int i=0; int j=0; char estado[1]; int menu, resFila, resAsiento; float recauda; char salir; // Mostrar el estado de los asientos vacios. printf("\n------------------------------"); printf("\n| Estado inicial de la sala |"); printf("\n------------------------------\n\n"); printf(" |\t0\t1\t2\t3\t4\t5\t6\t7\t<< Asiento\n"); printf("_____|_____________________________________________________________________________\n"); printf(" |\n"); for(i=0; i9){ printf("\nSolo tenemos filas del 0 al 9.\nVuelva a intentarlo: "); } }while (resFila<-1||resFila>9); printf("Número de asiento: "); // Pedir Asiento y control de nº de asiento correcto do{ scanf("%d", &resAsiento); if(resAsiento<0||resAsiento>7){ printf("\nSolo tenemos asientos del 0 al 7.\nVuelva a intentarlo: "); } }while (resAsiento<-1||resAsiento>7); // Control si el asiento está ocupado o es una reserva correcta if(sala[resFila][resAsiento]==1){ printf("\n****************************************"); printf("\nLo sentimos, este lugar ya está ocupado."); printf("\n****************************************\n"); }else{ sala[resFila][resAsiento]=1; printf("\n*****************************************"); printf("\nSu reserva se ha efectuado correctamente."); printf("\n¡GRACIAS POR SU COMPRA!"); printf("\n*****************************************\n"); } break; // OPCIÓN 2 case 2: // Mostrar el estado de los asientos vacios. printf("\n------------------------------"); printf("\n| Estado actual de la sala |"); printf("\n------------------------------\n\n"); printf(" |\t0\t1\t2\t3\t4\t5\t6\t7\t<< Asiento\n"); printf("_____|_____________________________________________________________________________\n"); printf(" |\n"); for(i=0; i9){ printf("\nSolo tenemos filas del 0 al 9.\nVuelva a intentarlo: "); } }while (resFila<-1||resFila>9); printf("Número de asiento: "); // Pedir Asiento y control de nº de asiento correcto do{ scanf("%d", &resAsiento); if(resAsiento<0||resAsiento>7){ printf("\nSolo tenemos asientos del 0 al 7.\nVuelva a intentarlo: "); } }while (resAsiento<-1||resAsiento>7); // Control si el asiento está libre (error) o es una anulación correcta if(sala[resFila][resAsiento]==0){ printf("\n***********************************"); printf("\nLo sentimos, este lugar está libre,\nno puede ser su reserva."); printf("\n***********************************\n"); }else{ sala[resFila][resAsiento]=0; printf("\n*******************************************"); printf("\nSu reserva ha sido cancelada correctamente."); printf("\n¡HASTA PRONTO!"); printf("\n*******************************************\n"); } break; // OPCIÓN 4 case 4: recauda=0; for(i=0; i