如何检查字段中输入的数字是否重复

时间:2018-06-02 08:29:26

标签: c++ vector field element

我正在做一个彩票项目。我在字段中插入七个数字,数字不能重复。我想知道我是否需要使用for循环或do while语句来执行此操作?我只是不知道如何检查下一个输入的数字是否不等于第一个数字。我必须输入一个数字,然后一步检查它是否相等。

for(int y=0;y<numbers;y++)
{ 
    cout << "input a number from 1-39:  ";
    cin >> input[y];

    while(input[y] < 1 || input[y] > 39)
    {
        cout << "inputed number is not between 1 and 39 ";
        cin >> input[y];
    }
}

3 个答案:

答案 0 :(得分:0)

你可以制作一个复制所有输入的临时数组,然后在for-loop的帮助下检查插入的数字是否已存在于临时数组中。

答案 1 :(得分:0)

使用数组的std::set瞬间。

vector < std::set > vec_set;

无论何时在集合中插入值,只需在集合中获取所有7个值后检查向量中的std::set.find()push_back

答案 2 :(得分:0)

将数字放入std :: set,直到集合中有七个元素。

#include <iostream>
#include <algorithm>
#include <set>

using namespace std;

int main()
{
   set<unsigned int> Numbers;
   while( Numbers.size() != 7 )
   {
      cout << "Please enter a number between 1 and 39 (" 
           << 7 - Numbers.size() << " left)" << endl;

      unsigned int Num;
      cin >> Num;

      if( Num < 1 || Num > 39 )
      {
         cout << "Invalid number entered: "<< Num << endl;
      }
      else
      {
         Numbers.insert( Num );
      }
   }
   unsigned int igralec[7];
   copy( Numbers.begin(), Numbers.end(), igralec );
}

如果您不熟悉STL,那么这是一个很好的时间点。