Как определить функцию в C ++ в одном файле и вызвать ее в другом?

Прошло много времени с тех пор, как я использовал C ++, поэтому, пожалуйста, держите меня в покое. Как правильно определить функцию на 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;
}
}

}
};

2

Решение

Просто пиши

int* bubblesort(int values[], int size);

в других исходных файлах, которые вы хотите вызвать этой функцией (перед тем, как вызывать ее).

Обратите внимание, что если вы не используете файлы заголовков, вам нужно вручную позаботиться о том, чтобы при изменении типа возвращаемого значения или списка параметров в одном файле вы делали одинаковые изменения во всех файлах.

Несколько других вещей:

Возможно, вы захотите перенести оператор return в конец функции, а не возвращать момент, когда вы сделали первый обмен. Или даже лучше, чтобы функции возвращались void — вызывающий объект уже знает значения, потому что он только что вызвал функцию, поэтому он ничего не добивается, чтобы вернуть ее снова.

cout << &values[i]<< "\n"; выводит адрес каждого значения, я думаю, что вы хотели вывести значения вместо этого.

int* array_p[] = values[]; и следующая за ним строка — синтаксические ошибки, я думаю, вы имели в виду: int *array_p = values; bubblesort(array_p, ArraySize);

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]