elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  El programa corre; pero en las 2 ultimas premisas no me da la respuesta correcta
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: El programa corre; pero en las 2 ultimas premisas no me da la respuesta correcta  (Leído 2,050 veces)
Julia13

Desconectado Desconectado

Mensajes: 9


Ver Perfil
El programa corre; pero en las 2 ultimas premisas no me da la respuesta correcta
« en: 29 Abril 2021, 20:40 pm »

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:
Código
  1. #include <iostream>
  2. #include <conio.h>
  3. using namespace std;
  4. int main()
  5. {
  6. int precio, h,cantidad;
  7. cout << "Ingresar las horas a alquilar:\t";
  8. cin >> h;
  9. cout <<"Ingresar la cantidad de autos:\t";
  10. cin >> cantidad;
  11. if (h == 2) {
  12. precio = 5*cantidad;
  13. }
  14. else {
  15. if (h > 2)
  16. {
  17. precio = 4*cantidad;
  18. }
  19. else {
  20. if (h > 4)
  21. {
  22. precio = 3*cantidad;
  23. }
  24. else {
  25. if (h > 9)
  26. {
  27. precio = 2*cantidad;
  28. }
  29. }
  30. }
  31. }
  32. cout << "El precio del alquiler del auto es:" << precio;
  33. }

MOD: Tema desbloqueado por agregar el código propio.
MOD: El código debe estar entre etiquetas de Código GeSHi.


« Última modificación: 29 Abril 2021, 21:00 pm por K-YreX » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: El programa corre; pero en las 2 ultimas premisas no me da la respuesta correcta
« Respuesta #1 en: 29 Abril 2021, 20:41 pm »

No se hacen tareas.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: El programa corre; pero en las 2 ultimas premisas no me da la respuesta correcta
« Respuesta #2 en: 29 Abril 2021, 21:12 pm »

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:
Código
  1. const int HORAS_RANGO_1 = 2;
  2. const float PRECIO_HORA_RANGO_1 = 5.0f;
  3. const int HORAS_RANGO_2 = 3;
  4. const float PRECIO_HORA_RANGO_2 = 4.0f;
  5. const int HORAS_RANGO_3 = 5;
  6. const float PRECIO_HORA_RANGO_3 = 3.0f;
  7. const float PRECIO_HORA_RANGO_4 = 2.0f;
  8.  
  9. int main() {
  10.  int horas, autos;
  11.  float precioFinal = 0.0f;
  12.  
  13.  // Pides las horas y los autos
  14.  
  15.  int horasActuales = 0;
  16.  while(horasActuales <= horas && horasActuales <= HORAS_RANGO_1) { // Mientras estes en el rango 1
  17.    precioFinal += autos * PRECIO_HORA_RANGO_1;                     // Se suma cada hora al precio del rango 1
  18.    ++horasActuales;                                                // Y se incrementan las horas cobradas
  19.  }
  20.  
  21.  while(horasActuales <= horas && horasActuales <= HORAS_RANGO_2) {
  22.    precioFinal += autos * PRECIO_HORA_RANGO_2;
  23.    ++horasActuales;
  24.  }
  25.  
  26.  // Y asi sucesivamente
  27.  
  28.  cout << "El precio final es: " << precioFinal << endl;
  29. }

PD: En el último bucle tan solo tendrás que comprobar si (horasActuales <= horas) ya que no tienes límite. :rolleyes:
« Última modificación: 29 Abril 2021, 21:15 pm por K-YreX » En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines