我正试图找出我妹妹的数学问题。所以作为我自己的一个小项目,我正在尝试编写一个程序来解决问题。我们的目标是找出你成为百万富翁时的年龄。它看起来不错,但它不会产生任何东西。我甚至无法让cout在屏幕上打印任何东西。它出什么问题了?我正在使用c ++。
int _tmain()
{
int age = 21, year = 1;
double salary, salaryIncrease, amountSaved, interestEarned,
total, totalMed;
salary = 38500, salaryIncrease = .10,
interestEarned = .045, amountSaved = .25, total = 0;
while (total < 1000000){
if (year % 3 == 0){
salary = salary * salaryIncrease + salary;
}
if (year = 10) interestEarned = .0525;
totalMed = salary * amountSaved;
total = (total + totalMed)*interestEarned;
age++;
year++;
}
cout << "Age = " << age << endl;
cout << "Total = " << total << endl;
cout << "hello?" << endl;
return 0;
}
答案 0 :(得分:1)
if ( year = 10 )
需要
if( year == 10 )
答案 1 :(得分:1)
year = 10)
是一项任务,您应该做的是比较year == 10
。
将if (year = 10)
更改为if (year == 10)
。
你应该像这样初始化你的变量:
double salary = 38500, salaryIncrease = .10, amountSaved = .25, interestEarned = .045,
total = .0, totalMed;
但我建议像这样写:
double salary = 38500.0;
double salaryIncrease = 0.10;
double amountSaved = 0.25;
double interestEarned = 0.045;
double total = 0.0;
double totalMed;
答案 2 :(得分:0)
正如已经指出的那样,如果(年= 10)需要if(年= = 10)。
另外,我不确定,关于你的逻辑。 在第一次迭代之后 - &gt; total = totalMed(是sal的1/4)* 0.045
因此,我的总数约为1%,约为385.
我们是否试图将此举转移到1000000?在,在哪种情况下,我们有一个非常长的while循环。可能,为什么你没有得到任何输出仍然正在处理的东西:)
答案 3 :(得分:0)
代码存在多个问题,例如实际分配给(year = 10)
的{{1}}条件,并且已经多次注意到。这个问题只会引起错误的兴趣。
您不打印任何内容的主要原因是year
永远不会达到目标。
它没有达到目标,因为你继续将total
乘以[0,1]范围内的兴趣数字,并将结果用作新的总数。
如果我们有一些兴趣total
和一笔本金额i
,那么当利息复合时,我们会有p
或p + ip
钱。在C ++术语中,(1 + i)p
或p = p * (1 + i)
。获得的利息为p += p * i
,我们将其添加到p * i
。
您正在更新p
,如下所示:
total
如果 total = (total + totalMed)*interestEarned;
是0.0525之类的值,请考虑一下interestEarned
中的值是什么:total
变为其先前值加上{{1}之和的5.25% }。你必须在这里重新考虑金融数学。
为了更好地了解程序中发生的事情,请单步执行循环并在每一步检查变量的值。或者将一些输出语句放入循环体中,这些语句会转储某些循环变量的值。在每一步中,问问自己变量是否朝着合理的方向发展。
原样,你的程序在完成循环之前不会产生任何输出。如果循环从未完成,则没有任何输出。