我正在做一个彩票项目。我在字段中插入七个数字,数字不能重复。我想知道我是否需要使用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];
}
}
答案 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,那么这是一个很好的时间点。