• Jueves 14 de Noviembre de 2024, 16:56

Autor Tema:  Programa calculador de precios, básico!  (Leído 1322 veces)

davidgm

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Programa calculador de precios, básico!
« en: Sábado 30 de Octubre de 2010, 13:47 »
0
Hola, soy estudiante de ingeniería informática y se me pide lo siguiente:

El recibo de la electricidad se elabora de la siguiente forma:
- 1 € de gastos fijos.
- 0.50 €/Kw para los primeros 100 Kw.
- 0.35 €/Kw para los siguientes 150 Kw.
- 0.25 €/Kw para el resto.
Escribe un programa que lea de teclado dos números, que representan los dos últimos
valores del contador de la luz (al restarlos obtendremos el consumo en Kw ), y calcule e
imprima en pantalla el importe total a pagar en función del consumo realizado.

Mi código es el siguiente:

#include <iostream>
#include <stdlib.h>
using namespace std;
const float A = 0.5;
const float B = 0.35;
const float C = 0.25;
int main() {
   double num1,num2,consumo,contador,var1,suma1;

   cout <<"Escriba el ultimo y el anterior valor del contadorn";
   cin >> num1 >> num2;
   consumo = num1-num2;
   suma1 = 0;
   contador = 0;

   if (consumo <= 100) {
      suma1 = consumo * A;
      }

   if (consumo > 100 && consumo <= 250) {
      for (int contador2 = 1; contador2 <= 100; contador2++) {
         var1 = contador2 * A;
         suma1 = suma1 + var1;
         contador = contador2;
      }
      do {
      contador++;
      var1 = contador * B;
      suma1 = suma1 + var1;
      } while (contador > 100 && contador <=250);
   }

   if (consumo > 250) {
      for (int contador3 = 1; contador3 <= 100; contador3++) {
         var1 = contador3 * A;
         suma1 = suma1 + var1;
         contador = contador3;
      }
      do {
      contador++;
      var1 = contador * B;
      suma1 = suma1 + var1;
      } while (contador <=250);
      do {
      contador++;
      var1 = contador * C;
      suma1 = suma1 + var1;
      } while (contador <=250);
   }

   suma1 = suma1 + 1;
   cout <<"El precio final es: " << suma1 << endl;
   system ("pause");
   return 0;
}


Me funciona siempre que el consumo sea menor o igual a 100, pero en los siguientes bucles que he hecho para cuando sea un valor entre 100 y 250 o superior a 250, el programa da como salida unos valores erróneos.

Muchas gracias!


EDIT: Ya lo conseguí resolver! De una manera mucho más sencilla, sin for ni do while... jejeje
de todos modos no entiendo porque ese código no daba bien el resultado.

vite666

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Programa calculador de precios, básico!
« Respuesta #1 en: Lunes 1 de Noviembre de 2010, 04:23 »
0
pues mira solo te voy a decir como funciona tu programa, espero tu puedas ver los errores.
Código: C++
  1.  
  2. #include <iostream>
  3. #include <stdlib.h>
  4. using namespace std;
  5. const float A = 0.5;
  6. const float B = 0.35;
  7. const float C = 0.25;
  8. int main() {
  9. double num1,num2,consumo,contador,var1,suma1;
  10.  
  11. cout <<"Escriba el ultimo y el anterior valor del contadorn";
  12. cin >> num1 >> num2;//supngamos que los valores son 500 y 250
  13. consumo = num1-num2;//vale 250
  14. suma1 = 0;
  15. contador = 0;
  16.  
  17. if (consumo <= 100) {//aqui no entra
  18. suma1 = consumo * A;
  19. }
  20.  
  21. if (consumo > 100 && consumo <= 250) {//aqui si
  22. for (int contador2 = 1; contador2 <= 100; contador2++) {//empezamos for
  23. var1 = contador2 * A;//        var=(1*0.5)/(2*.5)/(3*.5)/(4*.5)...
  24. suma1 = suma1 + var1;//suma1=0.5+1+1.5+2...
  25. contador = contador2;//contador=1/2/3/4/...
  26. }
  27. //cuando termine el for tendras
  28. //var=50 creo que es obio (100*.5)
  29. //suma1=2525
  30. //contador=100
  31. do {
  32. contador++;//contador=101
  33. var1 = contador * B;//var=(101*.35)/(102*.35)/...
  34. suma1 = suma1 + var1;//suma=2525+35.34+35.69
  35. } while (contador > 100 && contador <=250);
  36. //para cuando termine el do-while y si no me equivoco siempre es el mismo resultado
  37. //ya que le dices que se detenga hasta que sea 250 y no hasta el consumo
  38. //var1=87.84
  39. //suma1=11826.59
  40. //contador=251
  41. }
  42. //supongo que con lo anterior te quede claro todo lo demas
  43. if (consumo > 250) {
  44. for (int contador3 = 1; contador3 <= 100; contador3++) {
  45. var1 = contador3 * A;
  46. suma1 = suma1 + var1;
  47. contador = contador3;
  48. }
  49. do {
  50. contador++;
  51. var1 = contador * B;
  52. suma1 = suma1 + var1;
  53. } while (contador <=250);
  54. do {
  55. contador++;
  56. var1 = contador * C;
  57. suma1 = suma1 + var1;
  58. } while (contador <=250);
  59. }
  60.  
  61. suma1 = suma1 + 1;
  62. cout <<"El precio final es: " << suma1 << endl;
  63. system ("pause");
  64. return 0;
  65. }
  66.  
  67.  
  68.  
bueno solo espero q allas encontrado la forma en que haces todo esto con tan solo una linea de comando en cada if.
Saludos