如何在一个文件中正确定义C ++中的函数并在不使用头文件的情况下从另一个文件中调用它?我会使用头文件,但我的教授告诉我们不要。我一直在处理我的文件的许多编译问题,处理我的函数不存在。任何帮助表示赞赏。我的程序应该使用冒号排序使用选择排序和降序按升序对数组进行排序。
这是我到目前为止所拥有的。这是我的司机。
Driver.cpp
#include "selection.cpp"
#include "bubble.cpp"
#define ArraySize 10 //size of the array
#define Seed 1 //seed used to generate random number
int values[ArraySize];
int main(int argc, char** argv) {
int i;
//seed random number generator
srand(Seed);
//Fill array with random integers
for(i=0;i<ArraySize;i++)
values[i] = rand();
cout << "\n Numbers in array." << endl;
for(i=0;i<ArraySize; i++)
cout << &values[i]<< "\n";
int* array_p[] = values[];
//Function call for BubbleSort
bubblesort(array_p[], ArraySize);
for (i=0;i<ArraySize; i++)
cout << &values[i] << "\n";
//SelectionSort
selectionsort(array_p, ArraySize);
cout << "Numbers in ascending order." << endl;
for (i=0;i<ArraySize; i++)
cout << &values[i] << "\n";
return 0;
}
bubble.cpp
#include <iostream>
int* bubblesort(int values[], int size) {
int i, j;
for(i=0;i<size-1;i++){
for(j=0; j<size-1; j++){
if(values[j+1] > values[j]){
int temp = values[j];
values[j] = values[j+1];
values[j+1] = temp;
return values;
}
}
}
};
selection.cpp
#include <iostream>
int *selectionsort(int values[], int size){
for(int i=0; i<size-1; i++){
for(int j=0; j<size; j++){
if(values[i] < values[j]){
int temp = values[i];
values[i] = values[j];
values[j] = temp;
return values;
}
}
}
};
答案 0 :(得分:1)
只需写下
int* bubblesort(int values[], int size);
在您要调用该函数的其他源文件中(在调用之前)。
请注意,如果您没有使用头文件,那么您必须手动注意,如果您在一个文件中更改返回类型或参数列表,则会对所有文件进行相同的更改。
其他一些事情:
您可能需要考虑将return语句移动到函数的末尾,而不是在第一次交换时返回。或者甚至更好,让函数返回void
- 调用者已经知道值,因为他只是调用了函数,因此它无法再次返回它。
cout << &values[i]<< "\n";
输出每个值的地址,我想你想要输出值。
int* array_p[] = values[];
及其后面的行是语法错误,我想你的意思是:int *array_p = values; bubblesort(array_p, ArraySize);