• Jueves 14 de Noviembre de 2024, 04:08

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - davidgm

Páginas: [1]
1
C/C++ / Programa calculador de precios, básico!
« en: Sábado 30 de Octubre de 2010, 13:47 »
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.

Páginas: [1]