我最多可以将100个元素(非负数)加入到数组中。我必须忽略重复元素。我编写的代码基本上采用了每个非负元素,但它不会忽略重复。我写了一个bool函数ifExists:
bool ifExists(int array[], int size, int value)
{
bool isThere = false;
for (int i = 0; i < size; i++)
{
if (array[i] == value)
{
isThere = true;
}
}
return isThere;
}
我在接受用户输入的函数中调用此函数:
void getInput(int myArray[], int &numItem)
{
int checkNum, number, count;
cout << "Enter a number (- to quit): ";
cin >> number;
count = 0;
while ((number > 0) && (count < 100))
{
if (!ifExists(myArray, numItems, number))
{
list[count] = number;
count++;
}
if (count < 100) //&& !checkIfExists(list, numItems, number))
{
cout << "Enter a number (negative to quit): ";
cin >> number;
}
else {
cout << "no more space." << endl;
}
}
numItems = count;
}
我想我写的ifExists错了。我们的想法是getInput应该忽略来自用户的重复输入,只是向我的数组添加唯一值。但是,这不是我打印阵列时发生的情况。任何人都可以帮我判断我的ifExists是否被正确调用了吗?
答案 0 :(得分:2)
除了循环之后,你不能在任何地方设置numItems的值,因此你的IfExists总是得到值0并且不循环。将其更改为count,它会跟踪数组中的数字。
答案 1 :(得分:0)
您的程序包含n * n次迭代,其中n是元素数。这对于大型数据集来说根本不是高效的。如果不这样做,你可以简单地做一些只有2次迭代的事情。
2.然后在地图中迭代1次,并将地图中所有值为1(单个条目)的元素添加到不应重复的数组中。
将很快分享示例代码。