我目前正在研究计算器,我需要做一些我们没有学过的东西。在我讨论它是什么之前,我将发布以下代码:
解决
int num1;
int num2;
char choice;
int answer;
char choice2;
bool MoveOn;
bool ActiveAnswer;
// get first number
cout << "Enter your first number" << endl;
cin >> num1;
// get an operator
// is it valid? if not, get another operator
while (MoveOn = true)
{
cout << "What would you like to do? +, -, *, or / ?" << endl;
//cout << "Press C to clear and start over or X to close the program" << endl;
cin >> choice;
if (choice == '+')
{
cout << "Enter your second number" << endl;
cin >> num2;
answer = num1 + num2;
cout << "The answer is: " << answer << endl;
MoveOn = true;
num1 = answer;
cout << "Enter your second number" << endl;
cin >> num2;
answer = num1 + num2;
cout << "The answer is: " << answer << endl;
}
}
我需要做的是获取第一个号码,操作员,打印答案,后退并再次询问操作员,使用前一个答案作为第一个号码,获取第二个号码,打印答案再次。所以我需要的大部分工作。我花了一段时间才弄清楚如何让它再次使用前面的答案作为第一个数字,但后来出现了另一个问题。在打印出第一个答案之后,它会直接再次询问第二个号码,而不是让用户选择另一个操作员。我尝试的是持续声明,但它会继续回去询问操作员而不是让用户做第二个问题。我也尝试过两个单独的if语句,而不仅仅是你上面看到的语句,但这也不起作用。我不是一个希望有人必须为我解决这个问题的人。我想了解发生了什么,并知道它是如何工作的。如果有人可以伸出援助之手,我会非常感激。
答案 0 :(得分:2)
您需要密切关注您的代码并逐步完成它的工作。
现在的流程如下:
Ask for a number (num1)
(start_loop):
Ask for an operator
Ask for a second number (num2)
Calculate the answer (answer = num1 + num2)
Print the answer
**Ask for a second number (num2)**
Calculate the answer (answer = num1 + num2)
Print the answer
(go back to start_loop)
您要求两次输入第二个号码,这就是为什么您再次没有被提示输入操作员的原因。没有必要在同一个循环中询问两次,因为计算机将循环返回并重复您输入的第一个请求。
关键是将答案用作num1。
(start_loop):
Ask for an operator
Ask for a second number (num2)
Calculate the answer (answer = num1 + num2)
Print the answer
Set the new first number to be the answer (num1 = answer)
(go back to start_loop)
如果您继续执行第二个请求的位置,则还需要为下一个运算符添加请求,并重新遍历整个块。这就是循环的意图 - 重复你的代码块,所以如果你开始在循环中看到重复的代码,它应该是一个红旗,你做错了。
让循环为您重复代码。你的工作是弄清楚如何最好地编写重复的代码块,以及何时终止循环。
答案 1 :(得分:0)
这就是你应该如何终止程序;
// Declare this variable on top of the function
char terminate = 'W';
// This will be placed at the bottom of your function
cout << "Enter X to close the program, Otherwise Enter any key to continue" << endl;
// The program has to be terminated by the user, Enter X to terminate
// Otherwise, Enter any key to continue.
cin >> terminate;
if(terminate == 'X' || terminate == 'x')
MoveOn = false;
// Remember that char is case sensitive, X is different from x