diff options
author | justanothercatgirl <sotov2070@gmail.com> | 2024-10-04 17:37:14 +0300 |
---|---|---|
committer | justanothercatgirl <sotov2070@gmail.com> | 2024-10-04 18:07:56 +0300 |
commit | aa0d37540f5bc4bb6327b43c7213b46d0e261cf0 (patch) | |
tree | fa9d43d364f3a6d72d7a84c911aabc43658a2998 /hof_example.c | |
parent | a9bd52226fbcac98bddec9cffcef1ded8b75b5df (diff) |
Пока не закончил логику выбора программы, но готовы все алгоритмы
Diffstat (limited to 'hof_example.c')
-rw-r--r-- | hof_example.c | 33 |
1 files changed, 33 insertions, 0 deletions
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 <stdio.h> +#include <math.h> + +// Синтаксис непонятный, но так я создаю "синоним" +// к указателю на функцию, принимающую 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); +} |