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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 51, средняя оценка - 4.92
CrimCol
0 / 0 / 0
Регистрация: 08.03.2009
Сообщений: 12
#1

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

10.03.2009, 17:48. Просмотров 6979. Ответов 8
Метки нет (Все метки)

Нужна помощь....
Проблема такая: есть функция которая рисует график математической функции ранее обьявленной, например:
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) уже ранее задано
Вот, хочеться что-то такое....
Как это можно зделать? Может через свой собственный класс или как-то адресс функции передавать...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2009, 17:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция как параметр (C++):

Функция как параметр метода класса - C++
Есть класс с таким методом: void SGraph::DrawGraphPixels(float func) /* ! Сюда надо передать какую либо математическую функцию */ { ...

Функция,которая определяет, встречается ли заданная буква, которая передается в функцию как параметр - C++
Написать функцию, которая определяет, встречается ли заданная буква, которая передается в функцию как параметр, во введенной строке....

Функция не принимает параметр - C++
Есть структура: struct tovar { char name_prod; char country_prod; int number_prod; }; Есть программа: char...

Сделать так, чтобы функция возвращала параметр - C++
В общем, есть 3 матрицы, выведение их на экран и перемножение, сделанное через класс. Функции mult1 и mult2 умножают и выводят сразу на...

Функция - шаблон ,параметр - двумерный массив типа Т . - C++
Как правильно прописать в параметры функции двумерный массив типа Т ?(шаблонная функция) Видел формулу преобразования двумерного в...

Функция (параметр - одномерный массив). Вычислить разность между количеством отрицательных и положительных элементов - C++
Помогите, пожалуйста, с задачей. Сложность - работа с указателями.. Задача: Вычислить разность между количеством отрицательных и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.03.2009, 18:02 #2
Но sin(x) не функция. Это уже вызов. Это выражение. И его значение пойдет в функцию. Скажите смысл того, что вы пытаетесь сделать и для чего.
0
CrimCol
0 / 0 / 0
Регистрация: 08.03.2009
Сообщений: 12
10.03.2009, 18:08  [ТС] #3
Ну хотяб нарисовать больше одной функции на графике.... а так оно будет рисовать только одну f(x).
То что sin(x) это вызов, понятно... надо сделать как бы, чтоб оно обращалось к той функции которую перадаю(можна передавать только имя, к примеру)...
0
Vourhey
Почетный модератор
6481 / 2256 / 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;
}
смысл должен быть понятен.
2
CrimCol
0 / 0 / 0
Регистрация: 08.03.2009
Сообщений: 12
10.03.2009, 18:41  [ТС] #5
Ухты, спасибо!
Думаю разберусь, будут вопросы - напишу))
И сразу первый вопрос: как быть есть функция f1() с параметром?? f1(x)
0
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
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);
      }
и далее по накатанной дорожке.
1
CrimCol
0 / 0 / 0
Регистрация: 08.03.2009
Сообщений: 12
10.03.2009, 18:57  [ТС] #7
И еще чтоб в данный момент остановится)))
Я так понял все это не сложно и все это реально существует, просто меня этому пока не научили...
Скажите как все это называется и пару книг где об этом написано... Если без книг, то по названию найду))
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.03.2009, 18:59 #8
Ищи про указатели на функции и callback-функции. В частности в реализации колбэков все это и есть.
0
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;
}
Вообщем смысл пока понятен))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2009, 20:19
Привет! Вот еще темы с ответами:

Функция, возвращающая сумму двух входных параметров (если первый параметр четный) или их разность - C++
разработайте заданную функцию( 1) и продемонстрируйте работу этой функции, сделав в главной программе несколько вызовов функции с разными...

Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ? - C++
Ну собственно сабж... std::fstream fs; fs.write((char*)..) В случае бинарного потока я допустим пишу байты функцией write, как...

Как сделать функцию, которая тип данных использует как параметр? - C++
Хочу сделать функцию function(&quot;переменные&quot;, &quot;тип данных&quot;). Можно ли это реализовать? А именно, более подробно что-то в этом роде: ...

Как передать элемент структуры, как параметр функции - C++
Помогите, пожалуйста. Есть структура, необходимо создать функцию сортировки, но при этом, чтобы можно было передавать элемент структуры,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.03.2009, 20:19
Ответ Создать тему
Опции темы

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