Esta aplicacion simula un sistema para alquilar vehiculos, cada dia un cliente puede alquilar x cantidad de vehiculos (este valor esta dado por un #aleatoro)
SI un carro esta ocupado, no se puede alquilar hasta que se cumplan los dias del alquiler anterior, seguido de una variable diponibles que mira la cantidad de autos disponibles a alquilar (al haber mas autos solicitados que vehiculos disponibles, se cobra una multa). Si hay vehiculos disponibles corre otro #aleatorio para saber por cuantos dias los va a utilizar. Se calcula el precio del alquiler y se totaliza.
En el codigo se encuentra la clase Auto, aca se inicializa el auto y precio por renta mediante el constructor. seguido de tres metodos:
sumar_ganancia > se encartga de sumar la ganacia que obtuvo cada dia.
restar_dia_por_devolver > resta los dias que rento el auto hasta 0, para hacer el auto nuevamente disponible.
verificar_disponibilidad > verifica si hay un carro disponible para usar.
la salida de este programa es el siguiente.
El codigo es el siguiente
EStoy intentandolo hacer con mas de un auto disponible, aun tengo problemas. ¿Alguien tiene alguna idea de como hacerlo?
si pueden darme la idea asi sea en c++, java, js o en pseucodigo, quedo agradecido con ustedes. GRACIAS
SI un carro esta ocupado, no se puede alquilar hasta que se cumplan los dias del alquiler anterior, seguido de una variable diponibles que mira la cantidad de autos disponibles a alquilar (al haber mas autos solicitados que vehiculos disponibles, se cobra una multa). Si hay vehiculos disponibles corre otro #aleatorio para saber por cuantos dias los va a utilizar. Se calcula el precio del alquiler y se totaliza.
En el codigo se encuentra la clase Auto, aca se inicializa el auto y precio por renta mediante el constructor. seguido de tres metodos:
sumar_ganancia > se encartga de sumar la ganacia que obtuvo cada dia.
restar_dia_por_devolver > resta los dias que rento el auto hasta 0, para hacer el auto nuevamente disponible.
verificar_disponibilidad > verifica si hay un carro disponible para usar.
la salida de este programa es el siguiente.
Código [Seleccionar]
DIA #AUTOS DISP ALEAT DIAS COBRO
1 4 1 0.939 4 -
2 - 0 - - +$350
3 - 0 - - +$350
4 - 0 - - +$350
5 - 0 - - +$350
6 4 1 0.189 1 -
7 - 0 - - +$350
8 1 1 0.360 3 -
9 - 0 - - +$350
10 - 0 - - +$350
11 - 0 - - +$350
12 3 1 0.107 1 -
13 - 0 - - +$350
14 0 1 0.748 4 -
15 - 0 - - +$350
Se ganó $3500 en 15 dias simulados.
--------------------------Fin del programa---------------------------
El codigo es el siguiente
Código [Seleccionar]
from random import random
class Auto:
def __init__(self, nombre_auto, renta_por_dia):
self.nombre_auto = nombre_auto
self.renta_por_dia = renta_por_dia
self.dias_por_devolucion = 0
self.ganancia = 0
def sumar_ganancia(self):
self.ganancia += self.renta_por_dia
def restar_dia_por_devolver(self):
self.dias_por_devolucion -= 1
def verificar_disponibilidad(self):
disponibilidad = 0 if self.dias_por_devolucion > 0 else 1
return disponibilidad
# ######## INICIO DE EJECUCION ################
vehiculos = {'autoB':350}
dias_de_simulacion = 15
multa=0
i = 1
objetos = []
for nombre_auto, precio_de_renta in vehiculos.items():
# Convertir cada elemento en objeto
objetos.append(Auto(nombre_auto, precio_de_renta))
print('DIA\t#AUTOS\tDISP\tALEAT\tDIAS\tCOBRO')
while i <= dias_de_simulacion:
for autoObj in objetos:
if autoObj.verificar_disponibilidad() > 0:
aleatorio=random()
if aleatorio > 0.61:
nAutos = 4
multa+=600
elif aleatorio > 0.31:
nAutos = 3
multa+=400
elif aleatorio > 0.21:
nAutos = 2
multa+=200
elif aleatorio > 0.10:
nAutos = 1
else:
nAutos = 0
#continue
# Si el vehiculo esta disponible se genera un numero al azar para ese objeto
aleatorioD = random()
if aleatorioD > 0.61:
dias_de_renta = 4
elif aleatorioD > 0.31:
dias_de_renta = 3
elif aleatorioD > 0.21:
dias_de_renta = 2
elif aleatorioD > 0.10:
dias_de_renta = 1
else:
dias_de_renta = 0 # No se rento el auto
autoObj.dias_por_devolucion = dias_de_renta
print('{}\t{}\t1\t{}\t{}\t-'.format(i, nAutos, str(aleatorioD)[0:5], dias_de_renta))
else:
# Si el vehiculo no esta disponible, es porque esta siendo usado, por lo que se cobra el dia
autoObj.sumar_ganancia()
autoObj.restar_dia_por_devolver()
print('{}\t-\t0\t-\t-\t+${}\t-{}'.format(i, autoObj.renta_por_dia,multa))
i += 1
# Total de ganancia
print()
for autoObj in objetos:
print("El {} ganó ${} ".format(autoObj.nombre_auto, autoObj.ganancia))
print("--------------------------Fin del programa---------------------------")
EStoy intentandolo hacer con mas de un auto disponible, aun tengo problemas. ¿Alguien tiene alguna idea de como hacerlo?
si pueden darme la idea asi sea en c++, java, js o en pseucodigo, quedo agradecido con ustedes. GRACIAS