Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 19
1

Решение системы уравнений: написать функцию, которая как параметр будет использовать другую функцию

19.10.2010, 17:10. Показов 964. Ответов 2
Метки нет (Все метки)

Ребята помогите разобраться с указателем на функцию!

у меня решается система ДУ методом Рунге_кутта. я хочу написать функцию, которая как параметр будет использовать другую функцию. Пытаюсь организовать все это с помощью указателей - пока не получается.

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
28
29
30
31
32
33
double Speed(double Vk, double t, double teta, double y, double Wx, int rejim)
 
double func_x(double Vk, double t, double teta, double y, double Wx, int rejim)
 
double func_y(double Vk, double t, double teta, double y, double Wx, int rejim)
 
double Runge (double (*point)(double, double, double, double, double, int))
{
    double k1, k2, k3, k4;
    double Vk1, Vk2,Vk3, t1, teta1;
    k1 = point(Vk,t,teta,y,Wx,rejim);
    Vk1=Vk+(h*0.5)*k1;
    k2 = point(Vk1, t+0.5*h, teta,y,Wx,rejim);
    Vk2=Vk+(h*0.5)*k2;
    k3 = point(Vk2, t+0.5*h, teta,y,Wx,rejim);
    Vk4 = Vk + h*k3;
    k4 = point(Vk3, t+h, teta,y,Wx,rejim);
    return (Vk + (h/6)*(k1+2*k2+2*k3+k4));
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    ...
             ...
Vk[i+1] = Runge (Speed (Vk[i], t,  teta[i],  y[i],  Wx, 1));
Teta[i+1]=Runge(Ugol( (Vk[i], t,  teta[i],  y[i],  Wx, 1));
x[i+1]=Runge(func_x( (Vk[i], t,  teta[i],  y[i],  Wx, 1));
y[i+1]=Runge(func_y( (Vk[i], t,  teta[i],  y[i],  Wx, 1));
...
...
}

Я понимаю, что функция Runge написано неправильно, потому что нельзя так писать параметры указателя.
Но как сделать правильно - не понимаю...
Объясните плиз
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.10.2010, 17:10
Ответы с готовыми решениями:

Написать функцию Факториал и программу, которая будет использовать эту функцию
Суть программы: Нужно написать функцию Факториал и программу.ю которая будет использовать эту...

Написать функцию которая будет решать систему уравнений
Здравствуйте! Подскажите, пожалуйста, как в MathCAD написать функцию которая будет решать систему...

Создать функцию, которая будет вызывать другую функцию
Доброго времени суток. Изучаю PHP и вот столкнулся с такой практикой, не знаю как реализовать....

Написать функцию, которая находит решение системы методом Крамера
Задание: Написать функцию, которая находит решение системы методом Крамера. Вычисление...

2
Эксперт С++
5820 / 3472 / 357
Регистрация: 08.02.2010
Сообщений: 7,448
19.10.2010, 17:34 2
cam_rus, первым аргументом должен передаваться указатель на функцию, а уже потом параметры для этой функции. Пример:
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
28
29
30
31
32
33
34
#include <iostream>
 
double sum ( double x, double y )
{
    return x + y;
}
 
double dif ( double x, double y )
{
    return x - y;
}
 
/*
 * Объявляем новый тип func - указатель на функцию с двумя аргументами
 * типа double, возвращающими значение типа double
 * Можно было бы обойтись без этого, определив прототип функции eval так:
 * double eval( double (*func) (double, double), double x, double y)
 */
typedef double ( *func ) ( double, double );
 
double eval ( func f, double x, double y )
{
    return f ( x, y );
}
 
int main()
{
    double x = 16.8, y = 2.345;
    std::cout << "x = " << x << ", y = " << y << std::endl;
    std::cout << "Evaluating the sum of x and y: " << eval ( sum, x, y ) << std::endl;
    std::cout << "Evaluating the difference between x and y: " << eval ( dif, x, y )
              << std::endl;
    return 0;
}
2
0 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 19
19.10.2010, 18:32  [ТС] 3
О, спасибо большое, теперь заработало, я понял где ошибочка
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2010, 18:32

Написать функцию, которая находит решение системы методом Гаусса
Написать функцию, которая находит решение системы методом Гаусса. Найти решение системы при помощи...

Написать функцию, которая находит решение системы методом Крамера
Задание:

Написать функцию, которая могла бы передать значение в другую функцию
как сделать функцию которая бы могла передать значеие в другую функцию ну к примеру a=4*b; где...

Написать функцию, которая вычисляет минимум из четырех чисел. Использовать функцию min
package com.javarush.test.level02.lesson08.task04; public class Solution { public static...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru