aboutsummaryrefslogtreecommitdiffstats
path: root/hof_example.c
diff options
context:
space:
mode:
authorjustanothercatgirl <sotov2070@gmail.com>2024-10-04 17:37:14 +0300
committerjustanothercatgirl <sotov2070@gmail.com>2024-10-04 18:07:56 +0300
commitaa0d37540f5bc4bb6327b43c7213b46d0e261cf0 (patch)
treefa9d43d364f3a6d72d7a84c911aabc43658a2998 /hof_example.c
parenta9bd52226fbcac98bddec9cffcef1ded8b75b5df (diff)
Пока не закончил логику выбора программы, но готовы все алгоритмы
Diffstat (limited to 'hof_example.c')
-rw-r--r--hof_example.c33
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);
+}