Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: программирование в билдере, помогите разобраться с указателем на функцию  (Прочитано 5445 раз)
0 Пользователей и 1 Гость смотрят эту тему.
fara
Новенький

ru
Offline Offline

« : 10-02-2010 21:05 » 

Код:
typedef double (*pf) (double)
void FindA(pf func, double *pA,double a, double b, double h, int N)
{
      for (int i;i<=N;i++)
       {
         pA[i]=func(a+h*(i-1));
        }
}
double Main(double x)
{
 return sin(x);
}
FindA(Main,pA,a,b,N,h);// здесь ошибка, 1)сannot convert `double(*(_closure)(double)' to 'double (*)(double)`
2)type mismatch in parameter `func` (wanted `double (*)(double)`got `double (*(_closure)(double))(double)`)
помогите люди, пожалуйста.
« Последнее редактирование: 10-02-2010 21:19 от Finch » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 10-02-2010 21:18 » 

Вот такой пример, будет работать?
Код:
#include <math.h>

typedef double (*pf) (double);
void FindA(pf func, double *pA,double a, double b, double h, int N)
{
      for (int i=0;i<=N;i++)
      {
         pA[i]=func(a+h*(i-1));
      }
}

double sin_a(double x)
{
return sin(x);
}

int main()
{
double pA[6], a=3, b=4, N=5, h=6;
FindA(sin_a,pA,a,b,N,h);
return 0;
}
« Последнее редактирование: 10-02-2010 21:21 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
fara
Новенький

ru
Offline Offline

« Ответ #2 : 11-02-2010 07:57 » 

простите пожалуйста, не получается в форме, в консоли и ваш и мой вариант похожи.
Код:
 int N = StrToInt(EditN->Text);


    double a, b;  
    double h;
    double *pA=new double[N+1];

    for( int i = 0; i<(N+1); i++ )
    {
    pA[i]=0;
    }
    a=1;
    b=5;
    h=double(b-a)/double(N);
    FindA(sin_a,pA,a,b,N,h);

в вашем случае,  double pA[N+1];кроме моих ошибок, появляется
constant expression required(приложение работает)
прямо не знаю.....

« Последнее редактирование: 11-02-2010 08:12 от Вад » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 11-02-2010 08:29 » new

double pA[N+1]; - это не динамический массив.

Надо

double* pA=new double[N+1];
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines