[C con Clase] Ayuda programa parqueadero

Programante programante en gmail.com
Lun Abr 13 20:08:31 CEST 2009


Cesar Cortes escribió:
> Hola amigos tengo un problema con un programa de un parqueadero, el
> programa debe realizar lo siguiente:
>  
>  
> Es un menu de cinco opciones en donde la primera opcion me debe dejar
> ingrsar las placas de 10 autos q ingresan a un parqueadero que solo
> tiene 10 cupos (las placas son un numero de 3 gigitos ej: 159)
> el segundo caso me registra el boleto de una persona q ingresa a una
> sala de cine (cada boleto q se registra es una persona q ingresa)
> el tercer caso me pide el numero de la placa de un auto q quiera salir
> del parqueadero si el numero coincide con una de las placas ingresadas
> en el caso 1 me decuenta un auto del parqueadero
> el 4 caso me muestra el numero de personas q han ingresado a la sala
> de cine y el numero de autos que han salido,
> Esto ya lo hize mi problema esta en que si yo saco 1 auto en el caso 3
> y quiero volver a ingresar un auto al parqueadero caso 1, el me deja
> volver a ingresar 10 autos y el parqueadero solo tiene cupo para 10
> autos no se como hacer que me deje registrar autos solo cuando el
> parqueadero este con cupo disponible. 
> adjunto el codigo fuente
>  
>  
> Gracias

Te comento en el código.

> /*
>   Name: Programa para registrar la salida de vehiculos y la entrada de personas
>   Author: Cesar cortes 80142368
>   Date: 14/03/09 08:53
>   Description: Laboratorio # 4 algoritmos
> */
>
> #include <conio2.h>//aqui uso conio2 porque dev c++ no tiene esa libreria que es de turbo c++
> #include <iostream.h>
> #include <string.h>
> using namespace std;
> /*Tamaño máximo que puede tener la contraseña*/
> #define MAX_TAM_PASSWORD  80
> /*Contraseña por defecto*/
> #define DEF_PASSWORD "cesar"
>
>
> int main(void)
> {
>  string password = DEF_PASSWORD;
>  int vecp [3];
>   
Puesto que puede haber hasta 10 autos, esto debería ser

int vecp [3];


>  int menu=0;
>  int conta=0;
>  int contp=0;
>  int bol=0;    
>  int i=0;   
>  int aur=0; 
>  char nombre[5];
>  int numsale=0; 
>  int dato=0; 
>  string pass;  
>  int a=0;
>  int j=0; 
>  int contae=0;
>  int c=0;
>  clrscr();
>  
>   
>  cout<<"BIENVENIDO DIGITE LA CONTRASEÑA PARA INGRESAR  \n";  
>  cin >> pass; 
>
>  if (pass != password) 
>   {
>  cout<<" Digite una contraseña valida !!! \n"; 
>    
>  getch(); 
>   }
>    else 
>    {     
>        
>
>      while (menu!=5)
>      {
>      gotoxy(6,40); 
>      cout<<"                                  BIENVENIDO                                                 "; 
>      gotoxy(6,42); 
>      cout<<"  (1) Registrar los autos en el parqueadero                                                  "; 
>      gotoxy(6,44); 
>      cout<<"  (2) Registrar su boleto de entrada al cine                                                 "; 
>      gotoxy(6,46); 
>      cout<<"  (3) Sacar autos del parqueadero                                                            "; 
>      gotoxy(6,48); 
>      cout<<"  (4) cuantas personas entraron a cine y cantidad de vehiculos que salieron                  "; 
>      gotoxy(6,50); 
>      cout<<"  (5) Salir                                                                                  ";    
>      cin>>menu; 
>    
>        switch (menu) // Creo un switch para leer las 4 opciones del menu
>      
>      {
>         case 1: { clrscr();         // en este case se deben ingresar las 10 placas de los autos yo lo tengo con solo 3 por prueba 
>                    
>            cout<<"Por favor digite los tres numeros de la placa del auto que ingresa \n";
>                   
>            
>           for (i=0;i<3;i++)
>             
>           
>           { 
>               
>            contae++;
>           
>            
>           }  
>   
Te falta leer el número de placa e introducirlo en una posición libre de
vecp. Si no hay posición libre, es que el cupo ya está lleno.
Ese bucle que hay ahí no tiene sentido.

>                  
>                cout<<"el numero de autos que ha ingresado es  "<<  contae <<endl;
>                getch();  
>                
>                break;        
>               
>              } 
>                  
>       case 2: { clrscr(); // en este case por cada boleta que entre es una persona q ha ingresado 
>                             
>                cout<<"Por favor ingrese el numero de su boleta de cine \n";  
>                cin>>bol;  
>       
>                if (bol>=0) 
>                {contp++; 
>                cout<<"Su boleto ha sido registrado Gracias  \n";
>                getch(); 
>                }
>                else 
>                if (contp<0)  
>                
>                   {cout<<"Por favor digite un boleto valido \n"; 
>         
>                 }
>                break;
>               
>                  }  
>                case 3: { clrscr(); // en este case se debe digitar la placa del auto que va ha salir del parqueadero y comparar si coincide con las placas ingresadas 
>                            
>                      cout<<"Por favor digite los numeros de la placa del auto que va a salir \n"; 
>                      cin>>numsale;
>                          
>                     for(i=0;i<3;i++) 
>                     {    
>                       if (numsale==vecp[i])  
>                        {
>                        dato=vecp[i];  
>                        conta++;
>                         
>                         cout<<"El auto con la placa numero "<< dato << " ha salido \n";  
>                         getch();  
>                         vecp[i]=aur;
>   
Este es el único caso donde usas aur. Si pretende ser un valor para
indicar que no hay nadie en esa plaza, deberías establecerlo como constante.

>                         } 
>                         }
>                      
>                     if (dato==0) 
>                    { cout<<"La placa no existe \n";                                                                     
>                        getch();
>                        }       
>   
Después que haya salido un auto, no mostrará nunca este mensaje cuando
la placa no exista.

>                          
>                      break;  
>                        }               
>              
>           
>                case 4: { clrscr(); // aqui se debe mostrar cuantas personas han ingresado a la sala de cine y cuantos autos han salido del parqueadero
>    
>                  cout<<" EL NUMERO DE PERSONAS QUE HAN INGRESADO A LA SALA DE CINE ES:  "<< contp <<endl;  
>                  getch(); 
>              if (dato==0)  
>                    { cout<<"No han salido autos \n";  
>                     getch();
>                     } 
>                     
>                 else 
>                 
>                 {           
>                    
>                   
>                       // conta++; 
>                        cout<<"\n  El numero de carros que han salido es  "<< conta << endl;  
>                        getch();
>                     
>                   
>                 }
>                   break; 
>                      }  
>                            
>                      
>           default:  
>                  {  cout<<"Ingrese una opcion validan por favor \n"; 
>                     
>                     break; 
>        
>        
>        }
>        }
>        
>        
> }     
> }
> }





Más información sobre la lista de distribución Cconclase