как проверить, повторяются ли введенные числа в полях - PullRequest
0 голосов
/ 02 июня 2018

Я занимаюсь лотереей.Я вставляю семь чисел в поля, числа не могут повторяться.Мне было интересно, если мне нужно сделать это с 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 голосов
/ 02 июня 2018

Используйте std::set момент массива.

vector < std::set > vec_set;

всякий раз, когда вы вставляете значение в набор, просто проверяйте std::set.find() и push_back в векторе после получения всех 7 значений в наборе.

0 голосов
/ 02 июня 2018

Поместите числа в набор 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, это хороший момент для начала.

0 голосов
/ 02 июня 2018

Вы можете создать временный массив, который будет копировать все входные данные, а затем проверить, существует ли вставленный номер во временном массиве с помощью цикла for.

...