/*Eder Vazquez; S3; Estructura de Datos; UAPT*/ #include <iostream> #include<iomanip> #include <time.
h> #define MAX 5 using namespace std; struct carro { int placa; time_t entrada; int cajon; int saldo; }; class estacion { private: int cima; carro pila[MAX]; public: estacion(){cima=-1;}; void insertar (int a, int ent, int s); bool llena(); bool vacia(); void desplegar(estacion p); int tam(){return cima;};//regresa el valor de cima int consulta(int calve1); int cajon(int i); int placa(int x); int entrada(int x); void disminuir_cima() {cima--;};//para los cambios de pila void limpiar() {cima=-1;};//limpia la pila double costo(double x); }; double estacion::costo(double x)//para el cobro por 1 minuto { double a; a=(round(x/60)+1)*13; return a; } int estacion::cajon(int i)///regresa lo que contiene cajo { return pila[i].cajon; } int estacion::placa(int x)//regresa lo que contiene placa { return pila[x].placa; } int estacion::entrada(int x)//regresa lo que contiene entrada { return pila[x].entrada; } void estacion::insertar(int a, int ent, int s) { cima++; pila[cima].placa=a; pila[cima].entrada=ent; pila[cima].saldo=s; pila[cima].cajon=cima; }
bool estacion::llena() { return cima==MAX-1; } bool estacion::vacia() { return cima==-1; } void estacion::desplegar(estacion p) { time_t final; cout<<setiosflags(ios::right); cout<<setw(10)<<"PLACA"<<setw(15)<<"CAJON"<< setw(19)<<"COSTO ACTUAL"<< setw(25)<<"ENTRADA\n\n"; for(int i=0;i<=cima;i++) { cout<<setiosflags(ios::right); final=time(NULL); cout<<setw(10)<<pila[i].placa<<setw(15)<<pila[i].caj on+1<<setw(19)<<"$"<< costo(difftime(final,pila[i].entrada))<<setw(30)<<asctim e(gmtime(&pila[i].entrada))<<endl; cout<<"\n\n"; } cout<<"Hora actual: "<<asctime(gmtime(&final))<<endl; } int estacion::consulta(int clave1) { time_t final; system("cls"); for(int i=0;i<=tam();i++) { if(pila[i].placa==clave1) { cout<<"Placa: "<<pila[i].placa<<endl; cout<<"Entrada: "<<asctime(gmtime(&pila[i].entrada)); cout<<"Cajon actual: "<<(pila[i].cajon)+1<<endl; final=time(NULL); cout<<"Costo actual :$"<<costo(difftime(final,pila[i].entrada)); cout<<"\n\n"; return cajon(i); } } } void menu() { cout<<"1.- Ingreso de auto\n2.-Consulta\n3.-Desplegar lista\n4.-Salida de auto\n"; } main()//**********************MAIN************ ****************************// { estacion P1,aux;
int placa,q, cajon; time_t entrada; time_t comienzo, final; int opcion=0; while(opcion!=5) {system("color 2a"); menu(); cin>>opcion; system("cls"); switch(opcion) { case 1://insertar if(P1.llena()) cout<<"\n\tEL ESTACIONAMIENTO ESTA LLENO\n\n"; else { system("color 30"); cout<<"Placa del auto: "; cin>>placa; comienzo = time( NULL ); cout<<"Su hora de entrada es: "; cout<<asctime(gmtime(&comienzo )); P1.insertar(placa,comienzo,0); system("pause"); system("cls"); } break; case 2:system("color 8e"); if(P1.vacia()) cout<<"\t\tEl estacionamiento esta vacio\n\n\n"; else{ int clave1; cout<<"Ingrese placa: "; cin>>clave1; P1.consulta(clave1); cout<<"Hora actual: "<<asctime(gmtime(&final))<<endl; }system("pause");system("cls"); break; case 3:system("color 02"); if(P1.vacia()) cout<<"\t\tEl estacionamiento esta vacio\n\n\n"; else{ P1.desplegar(P1); }system("pause");system("cls"); break; case 4:system("color 8a"); cout<<"Un carro va a salir:"<<endl; int clave2; cout<<"Ingrese placa: "; cin>>clave2; P1.consulta(clave2); system("pause"); for(int i=P1.tam();i>=P1.consulta(clave2);i--)
//pasamos los de p1 a aux
for(int j=aux.tam()-1;j>=0;j--)//regresamos de aux a p1 { P1.insertar(aux.placa(j),aux.entrada(j),aux.cajon(j)); aux.disminuir_cima(); } aux.limpiar(); break; case 5: break; default: cout<<"Opcion invalidad"<<endl; system("pause"); system("cls"); } } system("pause"); return(0); }
{ aux.insertar(P1.placa(i),P1.entrada(i),P1.cajon(i)); P1.disminuir_cima(); }