2015-02-01 3 views
-3

мой цикл while не будет работать на условиях, которые я задал.C++ while loop не работает

Цель программы - определить количество лет, в течение которых будет произведена внесенная сумма, с использованием суммы депозита, процентной ставки и целевой суммы.

Программа просто останавливается после ввода целевой суммы, если я не изменил оператор while из < = to> =, и в этом случае он запускает цикл, но возвращает количество лет, установленных в раунде 100 или 1000 и т. Д. .

#include <iostream> 
#include <iomanip> 
#include <string> 
#include <math.h> 

using namespace std; 

int main() 
{ 
    //declare the variables 
    double rate, 
      balance = 0; 
    int deposit, 
     target, 
     years = 0; 
    cout << "****Lets make you some money!****" << endl << endl; 
    //input from the user 
    cout << "What is your deposit amount?: " << endl; 
    cin >> deposit; 
    cout << "What is your interest rate?: " << endl; 
    cin >> rate; 
    cout << "What is you target savings amount?: " << endl; 
    cin >> target; 
    rate = rate/100; 
    while (balance <= target); //when i change this to balance >= target the 'while' runs but just returns years divisible by 100 
    { 
     // calculation 
     balance += deposit * pow((1 + rate), years); 
     //balance = balance*(1 + rate) + deposit; // alternate calculation 
     //years++; 
     //users savings target 
     cout << "You will reach your target savings amount in: " << balance << " years." << endl << endl << " That's not that long now is it?" << endl; 
    } 
    return 0; 
} 

Заранее благодарен!

+1

Вы используете отладчик? Установите точку останова и проверьте состояние вашей программы. Какова фактическая ценность 'balance' и' target'? Откуда они получают свои ценности? – Dai

+0

Это может быть пробным, так как вы сравниваете int с двойным. –

+0

@ 445646 А что в этом проблема, в данном случае? (Существует возможная проблема, потому что он использует 'double' для денежных значений. Но его реальная числовая проблема - это то, как он вычисляет баланс. По крайней мере, мне бы хотелось иметь сберегательный счет, где баланс был рассчитан именно так.) –

ответ

12

Проблема неудачное суффикс:

while (balance <= target); 
//      ^

То же самое:

while (balance <= target) { 
    ; 
} 
{ 
    // calculation, which always runs exactly once 
    // regardless of what balance/target are 
} 

Просто перетащите точку с запятой.

+0

О, ну это смущает! Извините за кровавый ужасный вопрос, и спасибо, что нашли время ответить! – molebox