Передача функции в качестве аргумента другой функции - 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
предназначена для хранения введенного значения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д