【问题标题】:calculate x years for savings with deposition and revenue C++用存款和收入计算 x 年的储蓄 C++
【发布时间】: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_summax_savings 都不会以任何方式更改,因此如果该条件最初为真,它将始终为真,并且您的循环将无限旋转。因此,您永远不会到达输出语句,并且您的程序永远不会结束。并且仅供参考,单步调试器会立即使这一点变得明显,因此“尝试过调试”是相当难以相信的。

标签: c++ while-loop int double


【解决方案1】:

pow(change_factor, year) - 1

year 设置为 0。0 次方的任何值都是 1。1 - 1 = 0。基本上你乘以 0。

【讨论】:

  • 是的,但是我用 1 递增年份,只要循环是真的。
  • @DanielBäck 你在哪里重新计算geometric_sum
  • @DanielBäck while (geometric_sum &lt; max_savings) 这是无限循环,您的 geometric_sum 将保持 0 直到时间结束。
  • 我可以把geometric_sum放在年++之后的while循环中吗?
  • @DanielBäck 是的:while (geometric_sum &lt; max_savings) { year++; geometric_sum = ((double)deposit * (pow(change_factor, year) - 1)) / (change_factor - 1); } 另外我建议阅读有关函数 (tutorialspoint.com/cplusplus/cpp_functions.htm) 和流量控制 (cplusplus.com/doc/tutorial/control) 的内容。这些都是非常基本的东西,你应该理解它们。
猜你喜欢
  • 2018-09-07
  • 1970-01-01
  • 2019-09-12
  • 2023-03-30
  • 2015-11-22
  • 1970-01-01
  • 2020-11-13
  • 2019-06-02
  • 2016-06-24
相关资源
最近更新 更多