Передача функции в качестве аргумента другой функции - 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);

Объяснение кода листинга программы

  1. В данном коде происходит чтение значения из стандартного ввода (возможно, с клавиатуры) с помощью функции scanf.
  2. Форматный спецификатор %d указывает, что ожидается ввод целого числа.
  3. Переменная flag предназначена для хранения введенного значения.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы