Передача функции в качестве аргумента другой функции - C (СИ)
Формулировка задачи:
в книге Харви и Пол Дейтл нашел следующий вариант решения задачи, передачи функции в качестве параметра:
сортировка двух чисел)))
программа компилируется но при выполнении вылетает...
помогите разобраться
int ascending (int a, int b){
return (a>b);
}
int descending (int a, int b){
return (a<b);
}
void compare (int x, int y, int (*z)(int a, int b) ){
int t;
if((*z)(x, y)){
t=x;
x=y;
y=t;
}
}
int main() {
int flag;
int a, b;
printf("a=");
scanf("%d", &a);
printf("b=");
scanf("%d", &b);
printf("\n");
printf ("enter 1 to sort in ascending\n enter 2 to sort in descending\n");
scanf ("%d", flag);
if (flag == 1){
compare(a, b, ascending);
}
if (flag == 2){
compare(a, b, descending);
}
printf("a= %d b= %d", a, b);
return 0;
}Решение задачи: «Передача функции в качестве аргумента другой функции»
textual
Листинг программы
scanf ("%d", flag);
Объяснение кода листинга программы
- В данном коде происходит чтение значения из стандартного ввода (возможно, с клавиатуры) с помощью функции scanf.
- Форматный спецификатор
%dуказывает, что ожидается ввод целого числа. - Переменная
flagпредназначена для хранения введенного значения.