gpt4 book ai didi

c++ - 哨兵循环不会运行

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:47 25 4
gpt4 key购买 nike

我的程序可以编译,但我遇到了几个问题。我的第一个 cout 语句要求 e/E 结束工作,但在我的第二个 while 循环中我声明 (+ || - || * ||/) 不会运行。 +/-/*// 返回“操作类型无效”。你们能帮我看看我的错误吗?

第一个哨兵循环,只是学习循环:

#include <iostream>

using namespace std;

int main()
{
int numOne;
int numTwo;
int result;
string operation;

cout << "Please enter what operation you'd like to perform or e/E to end program: ";
cin >> operation;
while (operation == "e" || "E")
{
cout << "Operation type invalid." << endl;
cout << "Please enter what operation you'd like to perform or e/E to end program: ";
cin >> operation;
}

while (operation == "+" || operation == "-" || operation == "*" || operation == "/")
{
cout << "Please enter integer one: " << endl;
cin >> numOne;
cout << "Please enter integer two: " << endl;
cin >> numTwo;

if (operation == "+")
{
result = numOne + numTwo;
cout << "The numbers you entered were " << numOne << "," << numTwo << endl;
cout << "The operation you chose was " << operation << "." << endl;
cout << "The operations result is " << result << "." << endl;
cout << "Your equation was: " << numOne << " " << operation << " " << numTwo << " = " << result << ".";
}
else if (operation == "-")
{
result = numOne - numTwo;
cout << "The numbers you entered were " << numOne << "," << numTwo << endl;
cout << "The operation you chose was " << operation << "." << endl;
cout << "The operations result is " << result << "." << endl;
cout << "Your equation was: " << numOne << " " << operation << " " << numTwo << " = " << result << ".";
}
else if (operation == "*")
{
result = numOne * numTwo;
cout << "The numbers you entered were " << numOne << "," << numTwo << endl;
cout << "The operation you chose was " << operation << "." << endl;
cout << "The operations result is " << result << endl;
cout << "Your equation was: " << numOne << " " << operation << " " << numTwo << " = " << result << ".";
}
else if (operation == "/")
{
if (numTwo == 0)
{
cout << "You cannot divide by zero!" << endl;
}
else
{
result = numOne / numTwo;
cout << "The numbers you entered were " << numOne << "," << numTwo << endl;
cout << "The operation you chose was " << operation << "." << endl;
cout << "The operations result is " << result << endl;
cout << "Your equation was: " << numOne << " " << operation << " " << numTwo << " = " << result << ".";
}
}

}
return 0;
}

最佳答案

while (operation == "e" || "E")

这里你比较的是两个条件之一:

  1. 操作 == "e"吗?
  2. 如果不是,"E" 是一个有效的指针吗?

第二个条件是您的问题:"E" 当然是一个有效指针,因此该条件将始终为 true。总是。请注意,在第二种情况下,您没有将 operation"E" 进行比较。

你永远被困在这里:

while (operation == "e" || "E")
{
cout << "Operation type invalid." << endl;
cout << "Please enter what operation you'd like to perform or e/E to end program: ";
cin >> operation;
}

您只需要:

while (operation == "e" || operation == "E")

这可能只是一个打字错误或疏忽。

关于c++ - 哨兵循环不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36539863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com