我是C ++的新手和一般的堆栈溢出所以请原谅我,如果在某处犯了错误。
我在下面发布了我的代码,但我的问题是,当我在计算完成后输入yes
或no
时,no
应该结束程序(我还是工作)和yes
应该将其设置为另一个计算。
然而,我最终会出现一个毛病的循环。
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
bool b;
bool yes = b;
do {
float x;
float y;
float z;
float a;
cout << "Enter The amount you are investing:" << endl;
cin >> x;
cout << "Enter the rate:" << endl;
cin >> y;
cout << "Enter the investment period (years):" << endl;
cin >> z;
cout << "Enter the compounding period:" << endl;
cin >> a;
cout << pow((1 + y / a), (a*z))*x << endl << "Want to do another? (yes/no)";
cin >> b;
cin.ignore();
} while (yes = true); {
cin.clear();
if (b = yes) {
}
else {
}
}
return 0;
}
答案 0 :(得分:2)
您的代码的行为可能是由于:
无意中将终止条件bool
值yes
重新分配给:true
,而不是检查其值==
,而不是作业=
。
yes
循环中没有修改值while
。
可能的更新是:
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
// initialise the sentinel
bool yes = true;
do {
// define variables
float x, y, z, a;
// read input
cout << "Enter The amount you are investing:" << endl;
cin >> x;
cout << "Enter the rate:" << endl;
cin >> y;
cout << "Enter the investment period (years):" << endl;
cin >> z;
cout << "Enter the compounding period:" << endl;
cin >> a;
cout << pow((1 + y / a), a * z) * x << endl;
// redo calculation or exit
cout << "Want to do another? (yes/no)";
cin >> yes;
// check termination condition
} while (yes == true);
return 0;
}
此外,请注意未初始化的变量:x
,y
,z
,a
并考虑一个正确的默认值,以指示可能的错误结果。< / p>
最后,在进行计算时:1 + y / a
不明确,它可能意味着:(1 + y) / a
和:1 + (y / a)
,请在括号中强制执行所需顺序的优先顺序。
答案 1 :(得分:1)
您没有修改变量"2016-11-02 19:18:57.149197306 +0000 UTC"
的值。它始终设置为yes
。