Reservaciones de un cine ¿Qué pasa?

Iniciado por Alexh3, 22 Noviembre 2015, 16:43 PM

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

Alexh3

Amigos, soy nuevo en este foro y agradecería enormemente una pequeña ayuda con un código.
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.
#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();
           }
   }

0xFer

#1
for(i=0;i<5;i=i+1)
{
    for(j=0;j<5;j=j+1)
     {
        if (asientos[i][j]==1)
           {
                //asientosdisponibles+1
                asientosdisponibles++;
            }
          /*else
                asientosdisponibles+0;
       }*/
}


Te lo he corregido un poco, asientosdisponibles+1; aunque creas que esa linea aumenta el valor de asientosdisponibles en realidad no lo hace, el else no es necesario.

Ah y recuerda inicializar tus variables.

 asientosdisponibles = 0;
numeroasientos = 0;

fijate cuáles deben tener a fuerzas un valor que no sea basura, es decir, un número cualquiera que se les asigna a las variables por el sistema sólo porque el programador no las inicializa después de crear las variables.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

Alexh3

Amigo, de verdad te lo agradezco, tu consejo me sirvió bastante :P
Pero es un proyecto escolar y no funcionaba bien, así que decidí hacerlo más simple pero más a prueba de errores (aunque más largo)
pero igual me están costando trabajo nun par de cositas, te agradecería que me apoyes de nuevo en mi código actual.
de antemano, muchísimas graciias! !!!
(te dejo el link del nuevo post)
https://foro.elhacker.net/programacion_cc/reservaciones-t444671.0.html;msg2048053#msg2048053