Reserva de asientos en un cine

Iniciado por sora_ori, 22 Enero 2014, 22:05 PM

0 Miembros y 1 Visitante están viendo este tema.

ivancea96

En primer lugar:
Código (cpp) [Seleccionar]
while (opcion != 0){

No inicializas la variable opcion. Inicializala a un número diferente de 0, o usa do-while.

sora_ori

int opcion

Si que la he inicializado, pero el error que tengo en lo de antes no viene de ahí ¿verdad?


Saludos

dato000

Cita de: sora_ori en 23 Enero 2014, 15:46 PM
int opcion

Si que la he inicializado, pero el error que tengo en lo de antes no viene de ahí ¿verdad?


Saludos

Pues habian varios, pero el relacionado con el tema era que usabas un ciclo en el que recorria todos los valores de la sala desde i=0 y j=0 hasta la columna y fila deseada, por lo que mientras recorria todo el arreglo rellenando los valores, ahora, eso seria a modo general pero tu usaste la siguiente sentencia en el ciclo for:


for (i=0; i<fila; i++) {
    for (j=0; j<columna; j++) {;} // aqui recorre cada fila hasta la columna que digita el usuario
                                  // pero no hace nada
        if (mat[i][j] != 1){  //al primer uso, todos los valores son 0, entonces si son diferentes de 1
            mat[i][j] = 1; // con eso llenas todas las columnas, pues esta recorriendo i=0 hasta la fila...     
         
        }
        else printf("Asiento ocupado");
}


No necesitas usar un ciclo, si solo una sentencia de validación if para comprobar si es un asiento ocupado o no, eso es todo, ya tienes la columna y la fila que necesitas, el usuario la da, solo es comprobar si ya esta ocupada.

En fin, hay varias cosas, dejo el código, suerte con eso, sigue con el empeño.


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define max_columnas 5
#define max_filas    5


int main()
{
    srand(time(NULL));
    int opcion, i, j, fila, columna;
    int mat[max_columnas][max_filas];

    do {
          system("clear");
          printf("1.- Vaciar sala\n");
          printf("2.- Visualizar asientos disponibles\n");
          printf("3.- Reservar asientos\n");
          printf("0.- Salir\n");

          printf("\nEscoge una opcion: ");
          //fflush(stdin);
          scanf("%d", &opcion);

          switch (opcion){
                 case 1: // Vaciar sala
                      system("clear");
                      for (i=0; i < max_columnas; i++) {
                          for (j=0; j < max_filas; j++) {
                              mat[i][j] = 0;
                          }
                      }
                      printf("La sala ha sido vaciada correctamente");
                      getchar();
                      getchar();
                      break;



                 case 2: // Visualizar asientos disponibles
                      system("clear");
                      for (i=0;  i < max_columnas; i++) {
                          printf("\n");
                          for (j=0; j < max_filas; j++) {
                              printf(" %d ", mat[i][j]);
                          }
                          printf("\n");
                      }
                      getchar();
                      getchar();
                      break;



                 case 3: // Reservar asientos
                      system("clear");
                      printf("\tReserva de asientos");
                      printf("\n------------------------------\n");

                      printf("\nEscribe la fila: ");
                      scanf("%d", &fila);
                      printf("\nEscribe la columna: ");
                      scanf("%d", &columna);

                      if(mat[fila][columna] == 0)
                      {
                        mat[fila][columna] = 1;
                        printf("Asiento asignado correctamente");
                      }
                      else
                      {
                        printf("Asiento ocupado");
                      }

                      getchar();
                      getchar();
                      break;

                 case 0:
                      system("clear");
                      printf("Has decidido salir, hasta luego");
                      getchar();
                      return 0;
                      break;

                 default:
                      printf("Opcion no encontrada, hubo un error, esto va a explotar ARGH!!!\n\n");
                      getchar();
                      getchar();
                      break;



                 } // Fin switch

    } while (opcion != 0); // Fin do-while

    getchar();
    return 0;
}




sora_ori

Muchas gracias!

Ahora funciona perfecto, seguiré mejorandolo :P


Saludos