Я работаю над этой программой для сдачи экзамена в университете.Мне нужно отсортировать пассажирский массив с помощью алгоритма сортировки (я выбираю пузырьковую сортировку из-за его простоты).Мне нужно создать универсальную функцию и передать в качестве формальных параметров: список объектов, которые я хочу отсортировать;- критерий сортировки.
Так что я думаю, что мне придется создать только 1 увеличивающуюся функцию сортировки и 1 уменьшающую функцию сортировки и передать им параметры для сортировки.
Я уже пыталсяпередать char * file_name в функцию, но я думаю, что я не прав.
int passengersIncreasingBubbleSort_Birthyear(passengers test[], int x) {
int i = 0, j = 0, min_idx, flag = 0;
passengers temp;
for (i = 0; i < x; i++) {
min_idx = i;
for (j = i + 1; j < x; j++) {
if (test[j].birth_date.year < test[min_idx].birth_date.year) {
min_idx = j;
}
}
temp = test[min_idx];
test[min_idx] = test[i];
test[i] = temp;
flag = 1;
}
return flag;
}
Я пробовал это:
int passengersIncreasingBubbleSort_Birthyear(passengers test[], int x, char *value1, char *value2) {
int i = 0, j = 0, min_idx, flag = 0;
passengers temp;
for (i = 0; i < x; i++) {
min_idx = i;
for (j = i + 1; j < x; j++) {
if (value1 < value2) {
min_idx = j;
}
}
temp = test[min_idx];
test[min_idx] = test[i];
test[i] = temp;
flag = 1;
}
return flag;
}
Но это не работает, как ожидалось.
Хорошо, я достиг этого.
int cmpfunction_Increasing_Birthdate (const void * a, const void * b)
{
passengers *passengerA = (passengers *)a;
passengers *passengerB = (passengers *)b;
return ( passengerA->signup_date.year - passengerB->signup_date.year );
}
и это мой звонок:
qsort(array, x, sizeof(passengers), cmpfunction_Increasing_Birthdate);
Теперь вопрос, как я могу также сравнивать год, месяц и день?Могу ли я сделать это в той же функции сравнения?