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.