Форум программистов, компьютерный форум CyberForum.ru

Функция как параметр - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 51, средняя оценка - 4.92
CrimCol
0 / 0 / 0
Регистрация: 08.03.2009
Сообщений: 12
10.03.2009, 17:48     Функция как параметр #1
Нужна помощь....
Проблема такая: есть функция которая рисует график математической функции ранее обьявленной, например:
C++
1
2
3
4
5
6
7
8
9
float f(float x)
{
    return 2*sin(2*x);
}
void DrawF(float a, float b)// параметры - это промежуток по оси ОХ
{
     ....
     //тута используется функция f(x)
}
Значит, чего мне хочется: передавать в функцию DrawF(...) математическую функцию которую хочю рисовать, на пример вот так:
C++
1
2
3
4
5
DrawF(-2,2,sin(x));
//или
DrawF(-2,2,cos(x*x)+5*sin(x));
//или
DrawF(-2,2, f(x));// f(x) уже ранее задано
Вот, хочеться что-то такое....
Как это можно зделать? Может через свой собственный класс или как-то адресс функции передавать...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2009, 17:48     Функция как параметр
Посмотрите здесь:

C++ Функция, возвращающая сумму двух входных параметров (если первый параметр четный) или их разность
C++ Функция как параметр метода класса
C++ Функция - шаблон ,параметр - двумерный массив типа Т .
C++ C++ как правильно передавать функцию как параметр?
C++ Как передать параметр?
C++ Функция (параметр - одномерный массив). Вычислить разность между количеством отрицательных и положительных элементов
Сделать так, чтобы функция возвращала параметр C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.03.2009, 18:02     Функция как параметр #2
Но sin(x) не функция. Это уже вызов. Это выражение. И его значение пойдет в функцию. Скажите смысл того, что вы пытаетесь сделать и для чего.
CrimCol
0 / 0 / 0
Регистрация: 08.03.2009
Сообщений: 12
10.03.2009, 18:08  [ТС]     Функция как параметр #3
Ну хотяб нарисовать больше одной функции на графике.... а так оно будет рисовать только одну f(x).
То что sin(x) это вызов, понятно... надо сделать как бы, чтоб оно обращалось к той функции которую перадаю(можна передавать только имя, к примеру)...
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.03.2009, 18:37     Функция как параметр #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
 
void (*callback)(void);
 
call_any_func(void(*func)(void))
{
   func();
}
 
void f1()
{
   printf("f1 called\n");
}
 
void f2()
{
   printf("f2 called\n");
}
 
int main ()
{
   callback=(void *)f1;
   call_any_func(callback);
   callback=(void*)f2;
   call_any_func(callback);
   return 0;
}
смысл должен быть понятен.
CrimCol
0 / 0 / 0
Регистрация: 08.03.2009
Сообщений: 12
10.03.2009, 18:41  [ТС]     Функция как параметр #5
Ухты, спасибо!
Думаю разберусь, будут вопросы - напишу))
И сразу первый вопрос: как быть есть функция f1() с параметром?? f1(x)
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,314
10.03.2009, 18:49     Функция как параметр #6
Да ровно точно так же:
C++
1
2
3
4
5
6
typedef void (*callback_param_func)(int param);
      
      void call_any_func1(callback_param_func my_func, int param)
      {
          my_func(param);
      }
и далее по накатанной дорожке.
CrimCol
0 / 0 / 0
Регистрация: 08.03.2009
Сообщений: 12
10.03.2009, 18:57  [ТС]     Функция как параметр #7
И еще чтоб в данный момент остановится)))
Я так понял все это не сложно и все это реально существует, просто меня этому пока не научили...
Скажите как все это называется и пару книг где об этом написано... Если без книг, то по названию найду))
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.03.2009, 18:59     Функция как параметр #8
Ищи про указатели на функции и callback-функции. В частности в реализации колбэков все это и есть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2009, 20:19     Функция как параметр
Еще ссылки по теме:

C++ Функция,которая определяет, встречается ли заданная буква, которая передается в функцию как параметр
Функция не принимает параметр C++
C++ Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ?
C++ Как передать элемент структуры, как параметр функции
Как сделать функцию, которая тип данных использует как параметр? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
CrimCol
0 / 0 / 0
Регистрация: 08.03.2009
Сообщений: 12
10.03.2009, 20:19  [ТС]     Функция как параметр #9
В данный момент теоретически все ясно))
Когда попытаюсь это применить, как ообычно возникнут вопросы))
Сам не разберусь, сюда в Help.
Благодарен за данную информацию!

Добавлено через 1 час 16 минут 8 секунд
и еще, код написанный во втором сообщении работает при таком исправлении:
C++
1
2
3
4
5
6
7
8
int main ()
{
    callback=&f1;
    call_any_func(callback);
    callback=&f2;
    call_any_func(callback);
    return 0;
}
Вообщем смысл пока понятен))
Yandex
Объявления
10.03.2009, 20:19     Функция как параметр
Ответ Создать тему
Опции темы

Текущее время: 19:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru