Ejercicio Bomba

 avatar
unknown
c_cpp
23 days ago
2.9 kB
7
Indexable
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cmath>
using namespace std;

const double CANTIDAD_EN_TANQUE = 500; // galones iniciales en el tanque
const double PRECIO_OMISION = 1.80;   // precio por galC3n
const double TIEMPOSIM = .5;        // tiempo de la simulaciC3n en horas
const int MINUTOS = 60;             // nC:mero de minutos en una hora

class Bomba {
// secciC3n de declaraciC3n de datos
private:
	double cantEnTanque;
	double precio;
// declaraciones de mC)todos
public:
	Bomba(double = PRECIO_OMISION, double = CANTIDAD_EN_TANQUE); // constructor
	void obtenerValores();
	void solicitud(double);
};
//declaraciC3n e implementaciC3n de clase
class Cliente {
public:
	Cliente() {
		srand(time(NULL));
	};
	int llegada() {
		return(1 + rand() % 15);
	};
	int galones() {
		return(3 + rand() % 18);
	};
};
// secciC3n de implementaciC3n de mC)todos
Bomba::Bomba(double precioHoy, double cantidadEnTanque) {
	cantEnTanque = cantidadEnTanque;
	precio = precioHoy;
}
void Bomba::obtenerValores() {
	cout << "El tanque de gasolina tiene " << cantEnTanque << " galones de gasolina." << endl;
	cout << "El precio por galC3n de gasolina es $" << setiosflags(ios::showpoint)
	     << setprecision(2) << setiosflags(ios::fixed) << precio << endl;
}
void Bomba::solicitud(double cantSurt) {
	double surtida;
	if (cantEnTanque >= cantSurt)
		surtida = cantSurt;
	else
		surtida = cantEnTanque;
	cantEnTanque -= surtida;
	cout << cantSurt << " galones fueron solicitados " << endl;
	cout << surtida << " galones fueron surtidos" << endl;
	cout << cantEnTanque << " galones quedan en el tanque" << endl;
	cout << "El precio total es $" << setiosflags(ios::showpoint)
	     << setprecision(2) << (surtida * precio) << endl;
	return;
}

int main() {
	Bomba a(2.00, 300);     // Declara 1 objeto de tipo Bomba
	Cliente b;              // Declara un objeto de tipo Cliente
	int tiempoTotal = 0;
	int tiempoInact;
	int cantSolicitada;
	int MinutosSim;         // tiempo de la simulaciC3n en minutos

	MinutosSim = TIEMPOSIM * MINUTOS;
	cout << "\nInicio de una simulaciC3n nueva, el tiempo de simulaciC3n es "
	     << MinutosSim << " minutos " << endl << endl;
	a.obtenerValores();

	// obtener la primera llegada
	tiempoInact = b.llegada();
	tiempoTotal += tiempoInact;
	while (tiempoTotal <= MinutosSim) {
		cout << "\nEl tiempo inactiva es " << tiempoInact << " minutos" << endl
		     << "y llevamos " << tiempoTotal
		     << " minutos en la simulaciC3n." << endl;
		cantSolicitada = b.galones();
		a.solicitud(double(cantSolicitada));

		// obtener la siguiente llegada
		tiempoInact = b.llegada();
		tiempoTotal += tiempoInact;
	}
	cout << "\nEl tiempo inactiva es " << tiempoInact << " minutos." << endl
	     << "Como el tiempo total ahora excede el tiempo de la simulaciC3n, " << endl
	     << "este ejercicio de simulaciC3n termina." << endl;
	return 0;
}
Leave a Comment