【发布时间】:2019-02-24 07:16:32
【问题描述】:
我需要一个循环,它会一直要求输入,直到数组中没有重复值。当我运行我的代码时,它会识别出存在重复,但它会遍历我的其余代码并且不再要求输入。我已经尝试了很多不同的方法,因此非常感谢任何见解
cout << "Enter 10 integers with no repeated values: ";
for (x = 0; x < n; x++)
{
cin >> d[x];
}
while (duplicateTest(d))
{
for (x = 0; x < n; x++)
{
cin >> d[x];
}
}
bool duplicateTest (int d[])
{
int i, j;
bool duplicate;
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10 + 1; j++)
{
if (d[i] == d[j])
{
cout << "Invalid entry, do not repeat values." << endl
<< "Enter 10 integers with no repeated values: " << endl;
duplicate = true;
}
else
duplicate = false;
}
}
return duplicate;
【问题讨论】:
-
在输入 while 循环中使用计数器,而不是 for 循环。重复测试应将 for 循环限制为当前数据中的元素数。问问自己,您是否希望用户在输入重复项时必须从头开始,或者您只是想告诉他们并继续前进,直到他们拥有 10 个唯一值。
标签: c++ arrays loops input int