Gestión de Cines en C versión 2

Pues bien, para ir terminando de rematar los ejercicios con arrays, nos vamos a realizar una aplicación para gestionar las butacas de una sala de cine, de momento como no estamos tocando el entorno gráfico, lo voy a realizar en modo ASCII para recordar viejos tiempos. El programa debe de poder iniciar la sala, poniendo todas las butacas libres, tiene que poder imprimirte la sala con las butacas y decirte cuantas están libres y ocupadas, propusimos la idea de que fuera ASCII para que se viera a simple vista el aforo de la sala, por lo tanto vamos a utilizar para este cometido los caracteres «.» para cuando este libre y «X» para cuando este ocupada.

Evidentemente y como función principal, debe de poder ocupar las butacas, para ello pediremos fila y número de butaca, visualizar por un momento como esta dispuesto una sala de Cine, por una parte están las filas, cada fila tiene un número determinado de butacas, para no hacer que la visualización de la misma sea enorme en la pantalla, hemos planteado en hacerla para 10 filas con 25 butacas, dándonos un total de 250 butacas para ver la película en esa sala.

Por ultima función y por petición de Victor (le mando un saludo desde aquí), he implementado la función de cancelar reserva. En esta función vamos a comprobar que la fila y butaca que hemos seleccionado este ocupada (tiene un 1 en el array) y si lo esta, pues cancelamos la reserva de esa butaca (le ponemos un 0). La funcionalidad es muy similar a la de reservar, solo que aquí no hace falta recorrer la matriz para saber si le ponemos un 1 a la fila/butaca. En este caso como sabemos que la fila/butaca contiene un 1 (esta reservada), si tiene un 1 le ponemos un 0 y así ya no esta reservada. He copiado la función ocupar y he añadido las líneas necesarias y comentado las que ya no necesitamos en la función cancelar.

Pues bien, añado la función cancelar, para el código completo lo podéis bajar más abajo en este post.

void cancelar(int s[X][Y]) {
   int i, j;
   int reserva[X][Y], ri;

   iniciar(reserva);
   imprimir(s);

   printf("\nElija la fila y butaca que quiera cancelar su reserva, para parar de cancelar introduzca un 0 en la fila...\n");

   do {
        printf("Fila: ");
        scanf("%d",&i);
        if (i != 0) {
           fflush(stdin);
           printf("Butaca: ");
           scanf("%d", &j);
           fflush(stdin);
           if (s[i-1][j-1] == 1)
                s[i-1][j-1] = 0;
           else
                printf("\nLa butaca %d de la fila %d ya no esta ocupada, cancele otra butaca...\n", j, i);
        }
   } while(i != 0);

   printf("\nYa ha cancelado sus butacas, gracias.\n");
}

Descarga v1: CÓDIGO FUENTE VERSIÓN 1 (ANTIGUA)
Descarga v2: CÓDIGO FUENTE VERSIÓN 2

Espero que para ir rematando los ejercicios con ARRAYS, os pueda servir de ayuda este mini-programa de gestión de una sala de Cines.

Esta entrada fue publicada en Código C. Guarda el enlace permanente.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.