Как из функции с двумя параметрами селать функцию с один параметром, зафиксировав второй (чистый си).
Dudakudak Yar
Ученик
(130),
на голосовании
3 месяца назад
Есть функция с двумя параметрами:
int f(int x, int y);
Хотелось бы воспринимать ее как функцию первого параметра x при фиксированном значении второго параметра (например, y= 5): g(x) = f(x, 5). чтобы мочь подставить ее в функцию вида:
int Q(int (*g)(int));
Как создать такую функцию g при условиях: -нельзя лезть внутрь функций f и Q, -нельзя задавать y просто как переменную с голбальной видимостью ?
Дополнен 4 месяца назад
Плохо сформулировал вопрос... Тут участвует третья функция P, которая принимает указатель на функцию f(x, y) как параметр, затем она должна зафиксировать значение y = 5, и подставить функцию f(x, 5) как функцию одной переменной в функцию Q.
Потому что тут нет возможности поменять 5 на что-то другое.
робот д24
Мудрец
(19734)
Dudakudak Yar, в теории можно создать функцию высшего порядка которая будет возвращать указатель на функцию g и принимать y. Но я не уверен, что в си это возможно реализовать
Это неподохдит. Внешняя функция должна взять функцию двух переменных, зафиксировать в ней один параметр, и подставить ее как функцию одной переменной в другую функцию.
Николай Матвейчук
Просветленный
(45213)
Dudakudak Yar, а, Вам higher-order нужен. То есть функция, которая вернёт функцию. Дааа.... без замыканий тут будет сложно. Моего познания в C++ не хватает, чтобы Вам подсказать. Извините.
Это не подохдит. Внешняя функция должна взять функцию двух переменных, зафиксировать в ней один параметр, и подставить ее как функцию одной переменной в другую функцию.
g(x) = f(x, 5).
чтобы мочь подставить ее в функцию вида: Как создать такую функцию g при условиях:
-нельзя лезть внутрь функций f и Q,
-нельзя задавать y просто как переменную с голбальной видимостью
?