如何在数组中搜索之前已输入的 int 值

How to search an array for an int value that has already been entered previously

本文关键字:输入 int 数组 搜索      更新时间:2023-10-16

我正在制作一个简单的猜谜游戏程序。用户输入一个满分 100 的值,程序会告诉用户他们的猜测是太高还是太低。我想这样做,以便程序让用户知道他们之前已经输入了当前号码。我将如何在我的程序中实现一个循环,该循环将用户猜测并将其与数组列表进行比较以查找重复值?

#include <ctime>
#include <iostream>
#include <iomanip>
using namespace std;
#include <cstdlib>
int main() 
{
srand(time(0));
const int SIZE = 100; //array
int number[SIZE];
int i;
int numb = rand() % 100; //rng
cout <<"Hint: "<< numb << endl;
cout << " " << endl;
cout << "I'm thinking of a number between 1 and 100. Guess what it is: ";
for (i = 0; i < SIZE; i++)
{
cin >> number[i];
if (number[i] == numb)  
{
cout << "Correct! It's " << numb << endl; //if user guesses correct
break;
}
else if (number[i] < numb) //if user guesses too low
{
cout << "That's too low! guess again: " ;
}
else if (number[i] > numb) //if user guesses too high
{
cout <<  "That's too high! guess again: " ;
}           
}
}

为已键入的值创建一个向量:

vector <int> atyped;

创建一个函数来检查并返回 true 或 false:

int check(int entered_value, vector <int> atyped) {
ret=0;
for (int i=0;i<atyped.size();i++){
if (enterd_value==atyped[i])
ret=1;
}
return ret;
}

然后你所要做的就是:

if (check(number[i])!=0)
cout << "Sorry, you already tried that one!" <<endl;

希望这至少可以让你知道如何解决你的问题;)

使用std::find

for (i = 0; i < SIZE; i++)
{
cin >> number[i];
if  (number[i] == numb)
{
cout << "Correct! It's " << numb << endl; //if user guesses correct
break;
}
else if (std::find(number, number + i, number[i]) != number + i) 
{
cout <<  "You already guessed that! guess again: " ;
}
else if  ... // existing higher or lower
}

指针的范围[number, number + i)是之前的所有猜测。find返回第一个匹配指针,如果没有匹配项,则返回结束 (number + i(。

相关文章: