El dueño de un estacionamiento requiere de un algoritmo que le permita determinar cuánto debe cobrar por el uso del estacionamiento a sus clientes. Las tarifas que se tienen son las siguientes:
Las dos primeras horas a $5.00 c/u.
Las siguientes tres a $4.00 c/u.
Las cinco siguientes a $3.00 c/u.
Después de diez horas el costo por cada una es de $2.00.
Se le solicita que elabore un programa en C++ que teniendo como datos el número de horas que el auto de un cliente permanecerá en el estacionamiento, determine e imprima el monto a pagar.
Nota:
Debe validar los datos de entrada para una correcta ejecución de su programa.
Código es:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int precio, h,cantidad;
cout << "Ingresar las horas a alquilar:\t";
cin >> h;
cout <<"Ingresar la cantidad de autos:\t";
cin >> cantidad;
if (h == 2) {
precio = 5*cantidad;
}
else {
if (h > 2)
{
precio = 4*cantidad;
}
else {
if (h > 4)
{
precio = 3*cantidad;
}
else {
if (h > 9)
{
precio = 2*cantidad;
}
}
}
}
cout << "El precio del alquiler del auto es:" << precio;
}
MOD: Tema desbloqueado por agregar el código propio.
MOD: El código debe estar entre etiquetas de Código GeSHi.
No se hacen tareas.
El problema que tienes es de planteamiento. El enunciado no dice que si estás 2 horas, las pagas a un precio y si estás 3 las pagas a otro. Sino que dice que las 2 primeras las pagas a un precio y las 3 siguientes a otro. (Y así sucesivamente)
Es decir, si estuvieras 7 horas pagarías las 2 primeras a 5.00$, las 3 siguientes (ya van 5) a 4.00$ y las 2 siguientes a 3.00$.
Una forma sencilla que se me ocurre es con un bucle:
const int HORAS_RANGO_1 = 2;
const float PRECIO_HORA_RANGO_1 = 5.0f;
const int HORAS_RANGO_2 = 3;
const float PRECIO_HORA_RANGO_2 = 4.0f;
const int HORAS_RANGO_3 = 5;
const float PRECIO_HORA_RANGO_3 = 3.0f;
const float PRECIO_HORA_RANGO_4 = 2.0f;
int main() {
int horas, autos;
float precioFinal = 0.0f;
// Pides las horas y los autos
int horasActuales = 0;
while(horasActuales <= horas && horasActuales <= HORAS_RANGO_1) { // Mientras estes en el rango 1
precioFinal += autos * PRECIO_HORA_RANGO_1; // Se suma cada hora al precio del rango 1
++horasActuales; // Y se incrementan las horas cobradas
}
while(horasActuales <= horas && horasActuales <= HORAS_RANGO_2) {
precioFinal += autos * PRECIO_HORA_RANGO_2;
++horasActuales;
}
// Y asi sucesivamente
cout << "El precio final es: " << precioFinal << endl;
}
PD: En el último bucle tan solo tendrás que comprobar si (horasActuales <= horas) ya que no tienes límite. :rolleyes: