【发布时间】:2017-03-23 22:39:21
【问题描述】:
我正在做一个具有挑战性的 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;
}
【问题讨论】:
-
您应该描述当您尝试编译和运行程序时会发生什么。程序输出是什么?
-
查看
while循环条件。查看循环中的代码in。现在问问自己:在实际 while 循环体中的唯一语句中,什么可能将该条件从true更改为false? 无论geometric_sum和max_savings都不会以任何方式更改,因此如果该条件最初为真,它将始终为真,并且您的循环将无限旋转。因此,您永远不会到达输出语句,并且您的程序永远不会结束。并且仅供参考,单步调试器会立即使这一点变得明显,因此“尝试过调试”是相当难以相信的。
标签: c++ while-loop int double