【发布时间】:2014-07-16 14:03:01
【问题描述】:
我希望我的数组输入不能有两次相同的数字: 然而,这将有一个输出 "值存在请重新输入:"; 两次。我如何检查它是否是唯一的,如果它之前已经初始化,则只显示一次?
int main(){
int arr_size = 10;
int value;
int aArray[10];
for(int i=0;i<arr_size;i++)
{
cout<<"enter value of slot"<<i+1<<": ";
cin>>value;
for(int j=0;j<arr_size;j++){
if(value == aArray[j])
{
cout<<"value exist please re enter: ";
cin>>value;
}
else{
aArray[i] = value;
}
}
}
}
【问题讨论】:
-
使用
std::set<int>代替原始整数数组。 -
您可以考虑插入
std::set并检查其结果。即使是最小的更改,也可以使用std::find而不是循环。另请注意,如果到目前为止在这些集合中找不到该元素,则您正在读取未初始化的数据。 -
或者你只是在再次输入值后引入一个
break。但是尽管如此,您并没有初始化错误,因此 existence 检查的上限(即j-loop)应该是i而不是arr_size,因为在每个大于@ 的元素中987654330@里面可以放任何东西。 -
@isme 另一个注意事项:您应该使用
const int arr_size = 10;,然后定义int aArray[arr_size],以便稍后您必须更改数组的大小,您可以在一个地方进行,并且最重要的是,您将避免忘记在这两个地方进行更改(这些错误很难检测到,因为它们只会在运行时出现,并且有时会出现难以恢复到原始错误的疯狂行为)。