我正在尝试编写一个简单的程序,该程序遍历Vector中的数字以查找用户要求的数字。 我要求用户将随机数添加到列表(向量)中。 然后,我要求他们输入希望查找的号码。 我使用了if else阶梯来检查Vector,然后再遍历它。否则我显示:“列表为空” 我使用了基于范围的for循环遍历向量的数字, 然后我尝试将循环中的每个数字与WantedNum进行比较。 如果loop == wantedNum中的数字,我将其分配给wantNum,然后将WantedNum显示回给用户。 我的代码显示了所需的号码,但并没有像预期的那样停在那里。
我无法解决的情况是,当用户要求输入不在列表中的数字时。
这是我的代码(我用一堆随机数显式初始化了矢量,直到我可以解决“查找数字”部分,然后我将继续进行“添加数字”逻辑)
我是一个初学者,所以我很感谢您的解释,尤其是我做错了什么。.当然,我们欢迎提出建议。 谢谢你的建议。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
char selection {};
vector<int> numbers {10, 20, 30, 46, 78, 100, -2};
int wantedNum {};
cout << "Welcome to my menu: \n";
cout << "Enter F to find a number.\nEnter P to display the numbers in the "
"list.\nEnter Q to quit\n";
do
{
cout << "Enter your choice: ";
cin >> selection;
switch (selection)
{
case 'f':
case 'F':
cout << "Enter the number you wish to find: ";
cin >> wantedNum;
if (numbers.size() != 0)
{
for (auto i : numbers)
{
if (i == wantedNum)
wantedNum = i;
}
cout << "Here's your number: " << wantedNum << endl;
for (auto i : numbers)
{
if (i != wantedNum)
{
cout << "Searching..." << endl;
}
}
cout << "Your number is not in the list.\n";
}
else
{
cout << "List is empty - []\n";
}
break;
case 'p':
case 'P':
cout << "The numbers in the list are: ";
for (auto i : numbers)
{
cout << i << " ";
}
break;
case 'q':
case 'Q': cout << "GoodBye !\n"; break;
default: cout << "I dont recognize this input, please try again.\n";
}
} while (selection != 'Q' && selection != 'q');
}
答案 0 :(得分:2)
以下代码块
for (auto i : numbers) {
if (i == wantedNum)
wantedNum = i;
}
cout << "Here's your number: " << wantedNum << endl;
for (auto i : numbers) {
if (i != wantedNum) {
cout << "Searching..." << endl;
}
}
cout << "Your number is not in the list.\n";
向我表明您不清楚逻辑。
您必须:
这是更新版本
bool found = false;
for (auto i : numbers) {
if (i == wantedNum)
{
found = true;
break;
}
}
if ( found )
{
cout << "Found " << wantedNum << " in the list.\n"
}
else
{
cout << "Did not find " << wantedNum << " in the list.\n"
}
您可以使用std::find
来稍微减少代码量。
bool found = (std::find(numbers.begin(), numbers.end(), wantedNum) != numbers.end());
if ( found )
{
cout << "Found " << wantedNum << " in the list.\n"
}
else
{
cout << "Did not find " << wantedNum << " in the list.\n"
}