【发布时间】:2019-11-17 02:26:49
【问题描述】:
我正在尝试为 int arr[] 中的 3 位数字创建一个随机发生器并检查它的值。要检查的值是数组是否有双精度,例如。 (5,5,3)然后它将得到不重复的前(3)。我使用 printRepeating 查看数组中是否有重复数字,如果有,它将调用 firstNonRepeating 函数来获取非重复数字。问题出在 printRepeating 中,我如何检查 arr[i] 是否为空,所以它会调用 firstNonRepeating 函数是否为空,因为即使它为空(数组没有重复数字),它仍然会调用 firstNonRepeating ()。
int firstNonRepeating(int arr[], int size)
{
cout << "\nvalue of roll is ";
for (int x = 0; x < size; x++) {
int e;
for (e = 0; e < size; e++)
if (x != e && arr[x] == arr[e])
break;
if (e == size)
return arr[x];
}
return -1;
}
int printRepeating(int arr[], int size)
{
int i, j;
printf(" Repeating elements are ");
for(i = 0; i < size; i++)
for(j = i + 1; j < size; j++)
if(arr[i] == arr[j])
cout << arr[i] << " ";
if(arr[i] != 0)
{
cout << firstNonRepeating(arr, size);
}
}
int main()
{
int arr[] = {5, 3, 5};
int arr_size = sizeof(arr)/sizeof(arr[0]);
printRepeating(arr, arr_size);
}
附言另外,无论如何我可以为此编写更有效的代码吗?我只是为此借用了别人的代码...
【问题讨论】:
-
请添加语言标签。