Gestión sala Cine con C

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 ultima función, 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 u 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.

Pues bien, empezamos a desarrollar el código:

#include 

#define X 10
#define Y 25

void iniciar(int s[X][Y]);
void imprimir(int s[X][Y]);
void ocupar(int s[X][Y]);
void menu();

void main() {
   int sala[X][Y];
   int opc;

   do {
        menu();
        scanf("%d",&opc);
        switch (opc) {
           case 1:
                iniciar(sala);
                break;
           case 2:
                imprimir(sala);
                break;
           case 3:
                ocupar(sala);
                break;
           case 0: break;
           default:
                printf("\nNo ha introducido una opción valida..\n");
        }
   } while (opc != 0);
}

void menu() {
   printf("\nPulse en la opción deseada o 0 para salir...\n");
   printf("1. Iniciar sala\n");
   printf("2. Imprimir la ocupación de la sala\n");
   printf("3. Ocupar butaca\n");
   printf("0. Salir\n");
   printf("Elije una opcion: ");
}

void iniciar(int s[X][Y]) {
   int i, j;

   for(i=0;i 9)
                   printf(" X ");
                else
                   printf("X ");
                ocupada++;
                ocupadatotal++;
           } else {
                if (j > 9)
                   printf(" . ");
                else
                   printf(". ");
                libres++;
                libretotal++;
           }
        }
        printf (" -> Libres %d / Ocupadas %d", libres, ocupada);
        libres=0;
        ocupada=0;
   }
   printf("\nTotal butacas ocupadas: %d \t Total butacas libres: %d\n", ocupadatotal, libretotal);
}

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

   iniciar(reserva);
   imprimir(s);

   printf("\nElija la fila y butaca que quiera coger, para parar de reservar 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 (reserva[i-1][j-1] == 0 && s[i-1][j-1] == 0)
                reserva[i-1][j-1] = 1;
           else
                printf("\nLa butaca %d de la fila %d esta ocupada, reserve otra localidad...\n", j, i);
        }
   } while(i != 0);

   for (i=0;i

Descarga: CÓDIGO FUENTE

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 y etiquetada , , , , , , , , , , , , , , , , , , , . Guarda el enlace permanente.

3 respuestas a Gestión sala Cine con C

  1. José Arturo dijo:

    Excelente, gracias por el aporte. Tengo serio problema con el manejo de arreglos, sobre todo si son bidimensionales.
    Gracias por el ejemplo.

  2. nancy_021114 dijo:

    Ayudame a hacer u programa amigooo!
    Es sobre la sala de cine pero con 40 butacas :(
    Es u trabajo final y no tengo idea de como empezarlo;(

    • eurrea dijo:

      En el código fuente que que puedes descargar, defino eso que me indica en las dos primeras líneas de la siguiente manera:

      // Se define en estas variables las filas y butacas que tenemos en el cine
      // Para un ejemplo de 10 filas y 25 butacas definimos X a 10 y Y a 25
      #define X 10
      #define Y 25

      Si quisiera tener 40 butacas puede poner 4 filas (X) y 10 columnas (Y)

      Espero que le haya sido de ayuda.

      Saludos.

Deja un comentario

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