【发布时间】:2020-02-08 13:42:07
【问题描述】:
这是我用来创建数组的方法。
int* createArray(int N)
{
int* array = new int[N];
for (int i = 0; i < N; i++)
{
int rand_num = rand() % 10;
array[i] = rand_num % 10;
}
return array;
}
这是我用来计算出现次数的方法 使用线性搜索的数组
int linearSearch(int* nums, int N, int val)
{
int count = 0;
for (int i = 0; i <= N; i++)
{
if (val == *nums)
{
count+=1;
}
}
return count;
}
这是主要方法。线性搜索方法甚至返回 1 虽然数组中有两个。我该如何解决这个问题?
int main()
{
int N = 5;
int* arr = createArray(N);
for (int i = 0; i < N; i++)
{
cout << *arr++ << " " << endl;
}
cout << linearSearch(arr, N, 1) << " " << endl;
return 0;
}
【问题讨论】:
-
这是为了教育目的,一些关于指针和搜索算法的课程吗?
-
另一个错误是您的循环在线性搜索中执行了
N + 1次。确保将i <= N更改为i < N -
请注意:一旦发布的答案指出您的代码中存在错误,您就不应修复该错误 - 因为这会使答案无效,即使它是“善意”发布的'。
-
rand_num % 10;在int rand_num = rand() % 10;之后有什么意义?请查看<random>标头提供的现代功能,或者至少在main中调用srand。
标签: c++ arrays dynamic-memory-allocation linear-search