Como dice en el asunto, es un sistema de reservaciones de un cine, pero no puedo lograr que la función que evalúa las opciones de película, día, horario , llame correctamente a la función que reserva los asientos.
Amigos, ya me quemé la cabeza intentándolo, de verdad agradecería su ayuda enormemente, les paso todo mi código.
Código:
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
void gotoxy(int x, int y);
void datos(void);
void asientos(void);
struct guardar
{
char *pelicula[5]={"Avengers", "Terminator", "Principito", "Enredados", "Megamente"}, cliente[60], *horario[4]={"1-3pm", "3-5pm", "5-7pm", "7-9pm"}, *dia[5]={"Viernes","Sabado","Domingo"};
int adultos, ninos, ndia, nhorario, npelicula;
double coston, costoa, pago;
}c;
main()
{
int j;
char nombre[50];
gotoxy(35, 8);
puts("CINE");
gotoxy(17, 13);
puts("Presiona tres veces la tecla Enter para continuar");
getchar();
getchar();
system("cls");
getchar();
puts("Ingresa tu nombre");
scanf(" %[^\n]", &nombre);
j=0;
while (j<1)
{
printf("¿Qué película quieres reservar %s? Tenemos las siguientes opciones: \n Avengers ---->1\n Terminator -->2\n Principito -->3\n Enredados -->4\n Megamente -->5\n", nombre);
scanf("%d", &c.npelicula);
switch(c.npelicula)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("ha elegido la pelicula %s",c.pelicula[c.npelicula-1]);
datos();
j++;
break;
default:
puts("Opcion invalida");
break;
}
}
}
void gotoxy(int x, int y)
{
COORD coord;
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void datos(void)
{
int i, h;
long boletos, boletost;
puts("¿En que dia de la semana deseas ver la pelicula? \n Lunes-->1\n Martes-->2\n Miercoles-->3 \n Jueves-->4\n Viernes-->5 ");
scanf("%i", &c.ndia);
printf("Tu funcion sera el dia %s \nEscribe el horario en el que deseas reservar tus boletos \n\n 1 a 3 pm-->1\n 3 a 5 pm-->2\n 5 a 7 pm-->3\n 7 a 9 pm-->4\n",c.dia[c.ndia-1]);
scanf("%i", &c.nhorario);
asientos();
getchar();
}
void asientos(void)
{
int asientos[5][5]={{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1}},i,j,fila,numero,numeroasientos,asientosdisponibles=25,cont,d;
for(i=0;i<5;i=i+1)
{
for(j=0;j<5;j=j+1)
{
if (asientos[i][j]==1)
{
asientosdisponibles+1;
}
else asientosdisponibles+0;
}
}
printf("\nAsientos disponibles: %d", asientosdisponibles);
printf("\nHa elegido el horario de %s\ningrese el numero de boletos para adultos", c.horario[c.nhorario-1]);
scanf("%d", &c.adultos);
puts("ingrese el numero de boletos para ninos/3era edad");
scanf("%d", &c.ninos);
numeroasientos=c.adultos+c.ninos;
printf("\nnumeroasientos: %d\n", numeroasientos);
if (asientosdisponibles<numeroasientos)
{
puts("la funcion se ha agotado");
}
else
{
if(numeroasientos>=0 && numeroasientos<=25)
{
while(cont<numeroasientos)
{
d=0;
for(i=0;i<5;i=i+1)
{
for(j=0;j<5;j=j+1)
{
if (j==0)
{
do
{
printf("Fila %d --> ",c);
printf(" |%d| ",asientos[i][j]);
d=d+1;
}
while(d==0);
}
printf("\n");
}
printf(" **Pantalla**\n");
printf(" 0 1 2 3 4 --> Numero de Asiento\n");
puts("\nIngrese la fila que desee:\n");
scanf("%i", &fila);
switch(fila)
{
case 0:
case 1:
case 2:
case 3:
case 4:
puts("Ingrese el numero de asiento que desee:\n");
scanf("%i", &numero);
switch(numero)
{
case 0:
case 1:
case 2:
case 3:
case 4:
if(asientos[fila][numero]==1)
{
printf("Ha elegido correctamente el asiento\n");
asientos[fila][numero]=0;
cont=cont+1;
getchar();
getchar();
}
else
{
printf("El asiento esta ocupado, presione enter para continuar\n");
getchar();
getchar();
}
break;
default:
printf("Error, presione enter para continuar");
getchar();
getchar();
break;
}
break;
default:
printf("Error, presione enter para continuar");
getchar();
getchar();
break;
}
system("cls");
}
}
else printf("Error");
getchar();
getchar();
}
}
else
printf(" |%d| ",asientos[i][j]);
}
printf("\n");
}
printf(" **Pantalla**\n");
printf(" 0 1 2 3 4 --> Numero de Asiento\n");
puts("\nIngrese la fila que desee:\n");
scanf("%i", &fila);
switch(fila)
{
case 0:
case 1:
case 2:
case 3:
case 4:
puts("Ingrese el numero de asiento que desee:\n");
scanf("%i", &numero);
switch(numero)
{
case 0:
case 1:
case 2:
case 3:
case 4:
if(asientos[fila][numero]==1)
{
printf("Ha elegido correctamente el asiento\n");
asientos[fila][numero]=0;
cont=cont+1;
getchar();
getchar();
}
else
{
printf("El asiento esta ocupado, presione enter para continuar\n");
getchar();
getchar();
}
break;
default:
printf("Error, presione enter para continuar");
getchar();
getchar();
break;
}
break;
default:
printf("Error, presione enter para continuar");
getchar();
getchar();
break;
}
system("cls");
}
}
else printf("Error");
getchar();
getchar();
}
}