我真的不知道这个错误是什么意思。*代表指针,对吧?我没有使用指针,所以我不明白发生了什么?这是我的第二节编程课,所以我还是个新手。任何帮助都将非常感激!!
MAIN.CPP
#include <iostream>
#include "arr.hpp"
int main()
{
int size = getInteger();
int array;
fillArray(array,size);
sortArray(array, size); //THE ERROR COMES UP FOR ALL OF THESE FUNCTIONS.
displayArray(array, size);
binSearch(array, size, value);
return 0;
}
ARR.CPP
#include "arr.hpp"
#include <iostream>
int getInteger()
{
int value;
std::cout << "Please enter integer between 10 and 20 for size of array: ";
std::cin >> value;
// check if size is in range
if (value >= 10 && value <= 20)
{
return value;
}
else
{
std::cout << "Error. Please enter a correct value." << std::endl << std::endl;
std::cin.clear(); //clears error from cin.fail()
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n'); //removes old cin input for value
std::cin >> value;
}
return value;
}
void fillArray(int array[], int size)
{
std::srand(static_cast<unsigned>(std::time(0)));
for (int i = 0; i < size; i++)
{
array[i] = (std::rand() % 99)+1;
}
}
void sortArray(int array[], int size)
{
std::sort(array, array+size);
}
void displayArray(int array[], int size)
{
for (int i = 0; i < size; i++)
{
std::cout << array[i] << std::endl;
if((i+1)%5 == 0)
{
std::cout << std::endl;
}
}
}
bool binSearch(int array[], int size, int value)
{
int low = 0;
int high = size - 1;
int mid;
while(low <= high)
{
mid = (low+high) / 2;
if(value == array[mid])
{
return mid;
}
else if (value > array[mid])
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
return -1;
}
ARR.HPP
#ifndef arr_hpp
#define arr_hpp
int getInteger();
void fillArray(int array[], int size);
void sortArray(int array[], int size);
void displayArray(int array[], int size);
bool binSearch(int array[], int size, int value);
#endif /* arr_hpp */
- 您正在将
array
声明为整数,而不是数组。我假设你想声明一个大小为size
的数组,并将其传递给函数。 - 您缺少
value
的申报。
要解决这个问题,替换array
的声明并声明value
:
int size = getInteger();
int array[size];
int value;
...
编辑:正如评论中提到的,上述建议在标准c++中是不合法的。要想用合法的c++编译你的程序,你可能有两个选择:
- 使
size
在编译时已知,例如100,并要求用户输入0到100之间的一个数字。 - 使用数据结构,如
std::vector
,并相应地修改所有函数定义。