cin — C ++ Что не так с моей логикой?

Я только изучаю C ++, и мне нужна эта программа для работы в классе. По логике это работает. Я использую IDE bloodshed.net … и он, кажется, просто игнорирует cin >> kwh;, Я думаю, что в этом виновата кровь, а не моя, но я могу ошибаться.

Вот код:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{

double kwh = -1, monthCost = 0, totalCost = 0;
int monthCount = 0;
bool nextMonth = 0;

do
{
kwh = -1;
cout << "How many KWH did you use month " << ++monthCount << "?\n";
cin >> kwh;

if (kwh <= 1000 && kwh >= 0)
{
monthCost = kwh * 0.6;
}

else if (kwh < 0)
{
cout << "\nInvalid number of KWH.";
while (kwh < 0)
{
cout << "How many KWH did you use month " << monthCount
<< "?\n";
// Could you tell me what I'm doing wrong? I honestly think its
// the programs fault, not mine. Driectly below this comment
// I'm asking the user for the KWH and it just ignores it
// when I compile and run. WHY?!?
cin >> kwh;
}
}

else if (kwh > 1000)
{
monthCost = ((kwh - 1000) * 0.45) + 600;
}totalCost += monthCost;
cout << "\nYour electric bill for this month " << monthCount << " is $"<< monthCost << ".\n";

cout << "Would you like to enter another month? (1/0)\n";
cin >> nextMonth;
cout << "\n";
}
while (nextMonth == 1);

cout << "\n\nYour total for all " << nextMonth << " month(s) is %"<< totalCost << ".\n";
system("pause");}

0

Решение

Если kwh < 0, тогда monthCost никогда не вычисляется в этом экземпляре цикла. В результате он будет использовать любое значение monthCost, которое имело значение в предыдущем экземпляре цикла, или оно будет равно нулю, если цикл выполняется в первый раз. Поэтому, когда вы говорите, что программа игнорирует ваше значение для kwh, вы правы; после того, как вы получите значение, вы ничего не сделаете с ним.

3

Другие решения

Здесь нет cin << kwh; в вашем коде. Там только те cin >> kwh;,

Я ничего не знаю о кровопролитии, но, может быть, потому что вы определяете kwh как целое число, а компилятор не принимает строковые данные из командной строки?

-1

По вопросам рекламы [email protected]