EJERCICIO 4 (Eudis Serrano)
user_3711028
c_cpp
9 months ago
5.7 kB
5
Indexable
#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;
}Editor is loading...
Leave a Comment