EJERCICIO 4 (Eudis Serrano)

 avatar
user_3711028
c_cpp
8 days ago
4.0 kB
4
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);
};
class Persona{
    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(){
    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){
    double surtido;
    if (Tanque>= Surtir){
        surtido = Surtir;
        Tanque -= Surtir;
        cout<<endl<<"El tanque de gasolina aun tiene "<<Tanque<<" Galones";
    } else {
        surtido = Tanque;
        Tanque -= surtido;
        cout<<Surtir<<" galones solicitados "<<endl<<surtido<<" galones surtidos"<<endl<<Tanque<<" galones restantes"
        <<endl<<"El precio total es: "<<setprecision(2)<<(surtido*Precio)<<endl;
    }
     return Tanque;
    
}
double Bomba::PrecioxGalon (int Gg){
    int Galon;
    Galon = Gg;
    cout<<"El cliente ha realizado un pago de "<<Precio*Gg<<" Dolares";
    return (Precio*Gg);
}
int main(){
    Bomba A (2.0, 300);
    Persona C1;
    int TiempoTotal = 0, Solicitud = 1, TiempoInactivo, TiempoInactivoCuenta, Simulacion = 30, Galones_Vendidos = 0;
    double DineroRecolectado = 0.0, TanqueGasolina = 0.0, CantidadSolicitar;
    cout<<"inicio de simulacion de: "<<Simulacion<<" minutos"<<endl;
    A.ObtenerValores();
    TiempoInactivo = C1.llegada();
    TiempoTotal += TiempoInactivo;
    cout<<endl;
    cout<<"____________________________________________-Inicio-____________________________________________";
    while(TiempoInactivoCuenta<= Simulacion && Solicitud <= 5){
        cout<<endl<<endl<<"                                    -... esperando cliente ...-"<<endl;
        CantidadSolicitar = C1.galones();
        Galones_Vendidos += CantidadSolicitar;
        TiempoInactivo = C1.llegada();
        cout<<"Luego de "<<TiempoInactivo<<" minutos llega el cliente numero "<<Solicitud<<" y realiza una solicitud de "<<CantidadSolicitar<<" galones de gasolina"<<endl;
        DineroRecolectado += A.PrecioxGalon(CantidadSolicitar);
        cout<<endl<<"Hastan el momento hemos recolectado "<<DineroRecolectado<<" Dolares";
        TanqueGasolina= A.Solicitud(double(CantidadSolicitar));
        TiempoInactivoCuenta += TiempoInactivo;
        TiempoTotal += TiempoInactivo+2;
        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++;
        
    }
    cout<<"";
    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(5)<<TanqueGasolina<<" Galones de gasolina dentro del tanque |"<<endl<<"| "<<setw(5)<<TiempoTotal<<"  Minutos dentro de la simulacion       |"
    <<endl<<"------------------------------------------------"<<endl;
    return 0;
}
Leave a Comment