2016-03-10 3 views
1

Здравствуйте, я написал программу для расчета конечного баланса банковского счета. Я создал перегруженную функцию для добавления вкладов в стартовый баланс, один для суммы процентов и один без какого-либо интереса. В настоящее время вызов функции не отображает значения.Функция вызова не отображается cout

Внесение каких-либо изменений в причины, почему это происходит, будем очень благодарны! И да, я прошел через код по строчке и объяснил это своей резиновой утке.

#include <iostream> 

using namespace std; 

const int SIZE = 25; 
const int sentinel = -999; 


int main(){ 
    void balanceAccount(double, int, double[]); 
    void balanceAccount(double, int, double[], double); 
    double balance = 0.0, interest = 0.0, num = 0.0, total = 0.0; 
    double deposit[SIZE] = {}; 
    int count = 0; 

    cout << "Enter starting balance: $"; 
    cin >> balance; 

    while (num != sentinel && count < SIZE) 
    { 
     cout << "Enter up to 25 deposits, or -999 to quit: " << endl; 
     cin >> num; 
     if (num != sentinel){ 
      deposit[count] = num; 
      count++; 
     } 
     cout << "There are " << count << " deposits this week." << endl; 
    } 
    cout << "Test deposits: "; 
    for (int i = 0; i < count; i++){ 
     cout << deposit[i] << " "; 
    } 

    cout << "Enter interest amount: "; 
    cin >> interest; 
    if (interest == 0.0){ 
     balanceAccount(balance, count, deposit); 
    } 
    else if (interest > 0.0){ 
     balanceAccount(balance, count, deposit, interest); 
    } 

    system("pause"); 
    return 0; 
} 

void balanceAccount(double bal, int ct, double dep[]){ 
    double sum = 0.0; 
    for (int i = 0; i < ct; i++){ 
     sum += dep[i]; 
    } 
    sum = sum + bal; 

    cout << "Ending balance: $" << sum << endl; 
} 
void balanceAccount(double bal, int ct, double dep[], double rate){ 
    double interestAmount = 0.0, sum = 0.0; 
    for (int i = 0; i < ct; i++){ 
     sum += dep[i]; 
    } 
    sum = sum + bal; 
    interestAmount = sum * rate; 
    sum = sum + interestAmount; 

    cout << "Ending balance: $" << sum << endl; 
} 
+1

Вы имеете в виду 'interest == 0.0' not' interest = 0.0'. Кроме того, зачем публиковать только часть вашей «основной» функции? Должны ли мы догадываться, что вы написали? – Nard

+0

Включите в свой вопрос, что именно он отображает. На основе вашего кода вы должны увидеть '$ 0', но ваше описание звучит так, как будто вы просто видите' $ ', а затем ничего –

+0

Я думал, что ошибка была в вызове функции. Это было именно то, что вы указали == вместо =. Странно, потому что даже если процентная ставка больше 0, функция не будет звонить –

ответ

1

Ваше состояние в первом случае не сравнить interest от значения 0, а присваивает 0 переменной interest. Результатом такого условия является 0, который интерпретируется как ложный.
Далее, если (else-if) проверяет, является ли значение interest положительным, но поскольку вы изменили его в предыдущем состоянии на 0, он снова является ложным.

Изменить назначение в сравнение с использованием == вместо =.

0

Изменить код немного:

if (interest == 0) 
+0

Прошу проголосовать, чтобы закрыть вопросы, которые имеют схожие ошибки для ** простой типографской ошибки **. –

Смежные вопросы