2017-03-23 8 views
-1

私はC++で挑戦的な宿題をしていて、ここにいくつかの助けに本当に感謝しています!寄付と収入で節約のためのx年を計算するC++

私のプログラムでは、収入を伴う任意の年間預金が特定の貯蓄限度に達するまでに何年かかるかを計算する必要があります。

私は何が間違っているのか分かりませんし、助けを借りずにデバッグを試みました。 私はC++とMVS 2015の全く新しいものではありません。

私はそれが数学かプログラミング自体が間違っているか分かりません。 私は通常Pythonを使用しているので、静的な型は私にとっては異質です。

また、VSは多くの情報を提供せず、収益入力を求めた後にプログラムが停止するだけです。

提案がありますか?

#include "stdafx.h" 
#include <iostream> 
#include <string> 
#include <cmath> 
using namespace std; 

int main() 
{ 
    int deposit; 
    int max_savings; 
    double revenue; 
    double change_factor; 
    double year = 0; 
    double geometric_sum; 

    cout << "Choose a yearly deposition:\n"; 
    cin >> deposit; 
    cout << "Set your max saving-goal:\n"; 
    cin >> max_savings; 
    cout << "set a revenue in percent:\n"; 
    cin >> revenue; 

    change_factor = 1 + (revenue/100); 
    geometric_sum = ((double)deposit * (pow(change_factor, year) - 1))/(change_factor - 1); 

    while (geometric_sum < max_savings) 
     year++; 

    cout << "Your saving-goal will be in " << year << " years!" << endl; 
    cout << "Your account balance will then be " << geometric_sum << " dollars!" << endl; 

    return 0; 
} 
+0

プログラムをコンパイルして実行しようとすると、何が起こるのかを説明する必要があります。プログラムの出力は何ですか? – Svaberg

+1

そのwhileループ状態を見てください。ループ内のコード*を見てください。今度は自分自身に質問してください:実際のwhileループ本体の唯一のステートメントでは、その条件を 'true'から' false'に変更する可能性がありますか? ** 'geometric_sum'も' max_savings'も決して変更されないので、その条件が最初に当てはまる場合、**常に**真となり、あなたのループは無限に回転します。したがって、出力文に到達することはなく、プログラムは終了しません。そして、fyiでは、デバッガをシングルステッピングするとすぐに明らかになりました。したがって、「デバッグを試しました」というのは信じがたいです。 – WhozCraig

答えて

0

pow(change_factor, year) - 1

year

0の力で任意の値が1 1 - 1 = 0である0に設定されています。基本的には、0を掛けています。

+0

ええ、私は1年で1を増やすので、ループは真です。 –

+0

@DanielBäckそして、あなたは 'geometric_sum'をどこで再計算しますか? –

+0

@DanielBäck '(geometric_sum

関連する問題