[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