EJERCICIO 4 (Eudis Serrano)
#include <iostream> #include <iomanip> #include <cmath> #include <ctime> using namespace std; const double CantidadTanque = 500, PrecioOmision = 1.80; class Bomba{ private: double Tanque, Precio; public: Bomba (double = PrecioOmision, double = CantidadTanque); void ObtenerValores(); double Solicitud (double); double PrecioxGalon (int);//Funcion nueva }; class Persona{//Funcion modificada public: Persona(){ srand(time(NULL)); } int llegada(){ return (1+rand()%15); } int galones(){ return (3+rand()%18); } }; Bomba::Bomba(double PrecioHoy, double InicioTanque){ Tanque = InicioTanque; Precio = PrecioHoy; } void Bomba::ObtenerValores(){//funcion modificada para recibir la entrada de datos usando un do while oara evitar errores do{ cout<<endl<<"Indique la cantidad de galones de gasolina dentro del tanque: "; cin>>Tanque; cout<<"Indique el Precio en dolares: "; cin>>Precio; if(Tanque<0 || Precio<0){ cout<<"Asegurese de ingresas un valor positivo..."<<endl; } } while (Tanque < 0 || Precio < 0); //mostrar mensaje con informacion sobre la simulacion cout<<endl<<endl<<"La simulacion finalizara al atender 5 clientes o al superar los 30 minutos de inactividad"<<endl; cout<<"El tanque de gasolina tiene "<<Tanque<<" galones de gasolina" <<endl<<"El precio por galon es "<<setiosflags(ios::showpoint)<<setprecision(2)<<fixed<<Precio<<" Dolares"<<endl; } double Bomba::Solicitud(double Surtir){//Modificacion del return, de los mensajes y las instrucciones dentro de la funcion double surtido; if (Tanque>= Surtir){//Cuando hay suficiente gasolina dentro del tanque para surtir el pedido surtido = Surtir; Tanque -= Surtir; cout<<"El tanque de gasolina aun tiene "<<Tanque<<" Galones"; } else { //cuando el pedido es mayor a la cantidad de gasolina en el tanque cout<<"No hay suficientes galones de gasolina para surtir esta solicitud"<<endl<<"-La bomba ha solicitado llenar el tanque con 200 galones de gasolina"; Tanque += (200 - Surtir); //Se le añaden 200 galones mas al tanque y se le resta la cantidad de gasolina que solicito el cliente cout<<endl<<"-Se ha surtido la gasolina al cliente \nEl tanque aun tiene "<<Tanque<<" galones de gasolina"; } return Tanque;//Este valor es usado para mostrar cuantos galones degasolina quedaron en el tanque al final de la simulacion } double Bomba::PrecioxGalon (int Gg){//Nueva funcion, creada para calcular y mostrar cuantos dolares pago el cliente int Galon; Galon = Gg; cout<<endl<<"El cliente ha realizado un pago de "<<Precio*Gg<<" Dolares"; return (Precio*Gg);/*este valor es usado para acumular el dinero recibido e ir informando cuanto dinero ha sido recolectado*/ } int main(){ Bomba A; Persona C1; int TiempoTotal = 0, Solicitud = 1, TiempoInactivo, TiempoInactivoCuenta = 0, Simulacion = 30, Galones_Vendidos = 0; double DineroRecolectado = 0.0, TanqueGasolina = 0.0, CantidadSolicitar; A.ObtenerValores();//Se ingresan los valores del Tanque y el Precio cout<<endl; cout<<"____________________________________________-Inicio-____________________________________________"; while(TiempoInactivoCuenta<= Simulacion && Solicitud <= 5){/*El while se detiene cuando el TiempoInactivoCueta llega a 30 o cuando la Solicitud llegaba 5*/ cout<<endl<<endl<<" -... esperando cliente ...-"<<endl; CantidadSolicitar = C1.galones(); Galones_Vendidos += CantidadSolicitar;/*Se van almacenando cuantos galones han sido vendidos (para mostralo en el resumen)*/ TiempoInactivo = C1.llegada(); cout<<"Luego de "<<TiempoInactivo<<" minutos llega el cliente numero "<<Solicitud<<" y realiza una solicitud de "<<CantidadSolicitar<<" galones de gasolina"<<endl; TanqueGasolina= A.Solicitud(double(CantidadSolicitar));//Surtir la solicitud DineroRecolectado += A.PrecioxGalon(CantidadSolicitar);//Cuanto dinero se ha obtenido hasta el momento cout<<endl<<"Hastan el momento hemos recolectado "<<DineroRecolectado<<" Dolares"; TiempoInactivoCuenta += TiempoInactivo;//Contador del while TiempoTotal = TiempoInactivoCuenta+(2*Solicitud);/*Tiempo total dentro de la simulacion, teniendo en cuenta la duracion del servicio*/ cout<<endl<<"El tiempo inactivo es: "<<TiempoInactivoCuenta<<" minutos"<<endl<<"Llevamos "<<TiempoTotal<<" minutos dentro de la simulacion \n(teniendo en cuenta que cada servicio tiene una duracion de 2 minutos)"<<endl; Solicitud++; } if(TiempoInactivoCuenta >= Simulacion){ cout<<endl<<endl<<"___________-El tiempo inactivo supero los 30 min, esta simulacion ha sido finalizada-___________"; } else { cout<<endl<< "_-El numero de solicitudes ha alcanzado el limite propuesto, esta simulacion ha sido finalizada-_"; } cout<<endl<<endl<<"------------------- RESUMEN --------------------"<<endl<<"| "<<setw(5)<<Solicitud-1<<" Clientes recibidos |" <<endl<<"| "<<setw(5)<<Galones_Vendidos<<" Galones vendidos |"<<endl<<"| "<<setw(6)<<DineroRecolectado<<" Dinero recolectado |" <<endl<<"| "<<setw(6)<<TanqueGasolina<<" Galones de gasolina dentro del tanque |"<<endl<<"| "<<setw(5)<<TiempoTotal<<" Minutos dentro de la simulacion |" <<endl<<"------------------------------------------------"<<endl; cout<<"_FUAKATA!_"<<endl;//FUAKATA return 0; }
Leave a Comment