Vous êtes sur la page 1sur 4

/*Menu deestructuras.

cpp Autor:Miguel Angel Garca Caldern*/ #include <iostream> #include <iomanip> #include <cmath> #define N 10 #define precio 10 using namespace std; struct carro { int placas; float entrada; float saldo; }; class pila { private: int cima; carro lista_pila[N]; public: pila(){cima=0;} //constructor void insertar(int placa,float entrada);//registra un auto bool pila_llena(); //verificar si la pila esta llena void desplegar();//desplegar lista de autos void cerrar();//cerrar el estacionamiento void salida(float h_salida,int clave);//cobrar void espacio();//ver si ahi espacio int consulta(int placa);//consulta una placa }; void pila::insertar(int placa,float entrada) { if(pila_llena()) cout<<"Pila llena\n"; else { lista_pila[cima].placas=placa; lista_pila[cima].entrada=entrada; lista_pila[cima].saldo=0; cima++; } } void pila::desplegar() { cout<<"clave: "<<setw(21)<<"Placas: "<<setw(21)<<"Entrada:"<<endl; for(int i=0;i<cima; i++) cout<<setw(3)<<i<<setw(24)<<lista_pila[i].placas<<setw(18)<<lista_pila[i].e ntrada<<endl; } bool pila::pila_llena() { return cima==N; }

void pila::cerrar() { for(int i=0;i<cima; i++) { lista_pila[i].saldo=((22-lista_pila[i].entrada)*precio)+110;//se agregan 11 0 por el costo de 10pm a 9am lista_pila[i].entrada=9;//se asigna nueva entrada a las 9 } } void pila::salida(float h_salida, int clave) { carro aux[N];//estructura auxiliar int contador=0; lista_pila[clave].saldo+=(h_salida-lista_pila[clave].entrada)*precio; cout<<"Saldo: "<<lista_pila[clave].saldo<<endl; system("pause"); int aux_cima=cima-1;// se resta uno porque la cima esta por encima del nume ro real for(cima;cima>clave;cima--)//guarda la pila en un auxiliar aux[cima]=lista_pila[cima]; for(cima;cima<aux_cima;cima++)//vuelve a llenar la pila usando la estructur a auxiliar lista_pila[cima]=aux[cima+1]; } void pila::espacio() { if(cima<N) cout<<"Si hay espacio\n"; else cout<<"El estacionamiento esta lleno\n"; } int::pila::consulta(int placa) { int bandera=0; for(int i=0;i<cima;i++) { if(placa==lista_pila[i].placas) bandera=1; } return bandera; } double ceil (double x);//funcion para redondear un numero int main() { pila pila_1; int contador=0,op=1,clave,bandera,placa; float h_salida=20,entrada=25; system ("COLOR 0e");

while(op!=7) { system("cls"); entrada=25;//para registra con el ciclo while de peticion de hora de en trada cout<<"Elige una opcion:\n1.-Registrar un auto\n2.-Salida de un auto\n3 .-Cerrar" <<"\n4.-Verificar si hay espacio\n5.-Consulta de un vehiculo\n6.-Lista de autos\n7.-Salir\nopcion: "; cin>>op; system("cls"); switch(op) { case 1: cout<<"Escribe las placas del auto: "; cin>>placa; while((entrada<0) (entrada>22)) { cout<<"Escribe la hora de entrada en formato hh.mm:"; cin>>entrada; entrada=ceil(entrada);//redondea la hora } pila_1.insertar(placa,entrada); break; case 2: cout<<"Escribe la hora de salida:"; cin>>h_salida; h_salida=ceil(h_salida);//redondea la hora pila_1.desplegar(); cout<<"Escribe la clave: "; cin>>clave; system("cls"); cout<<"Costo Total: "; pila_1.salida(h_salida,clave); break; case 3: pila_1.cerrar(); break; case 4: pila_1.espacio(); system("pause"); break; case 5: cout<<"La placa que quieres consultar: "; cin>>placa; bandera=pila_1.consulta(placa); if(bandera==1) cout<<"Auto encontrado\n"; else cout<<"Auto no encontrado\n"; system("pause"); break; case 6: pila_1.desplegar(); system("pause"); break; }

} return 0; }

Vous aimerez peut-être aussi