From aa0d37540f5bc4bb6327b43c7213b46d0e261cf0 Mon Sep 17 00:00:00 2001 From: justanothercatgirl Date: Fri, 4 Oct 2024 17:37:14 +0300 Subject: Пока не закончил логику выбора программы, но готовы все алгоритмы MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hof_example.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 hof_example.c (limited to 'hof_example.c') diff --git a/hof_example.c b/hof_example.c new file mode 100644 index 0000000..d8fee90 --- /dev/null +++ b/hof_example.c @@ -0,0 +1,33 @@ +// Это пример использования функций высшего порядка +#include +#include + +// Синтаксис непонятный, но так я создаю "синоним" +// к указателю на функцию, принимающую 2 double и возвращающую double +typedef double(*func_t)(double, double); + + +// Эта функция "передаёт" аргументы в функцию и выводит результат +void calculate_and_print(func_t function, double arg1, double arg2) { + printf("F(%lf, %lf) = %lf\n", arg1, arg2, function(arg1, arg2)); +} + +// считает сумму x и y +double sum(double x, double y) { + return x + y; +} + +// считает произведение x и y +double prod(double x, double y) { + return x * y; +} + +int main(void) { + // передаёшь функцию в функцию по имени, + // как самый обычный аргумент + calculate_and_print(sum, 420, 69); + calculate_and_print(prod, 420, 69); + // fmax - функция стандартной библиотеки + // возвращает максимальное из двух чисел + calculate_and_print(fmax, 420, 69); +} -- cgit v1.2.3-70-g09d2