Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Примеры программ



// Тема: передача имени функции в качестве параметра

// Программа нахождения определенного интеграла

// функции f(x) на отрезке [a, b] с точностью eps методом

// КРИВОЛИНЕЙНЫХ трапеций (метод СРЕДНИХ прямоугольников).

// Рекурсия. Два варианта функций.

#include <iostream.h>

#include <math.h>

#include <conio.h>

typedef double(*tfun)(double); //определение типа функции

double integral(double a, double b, double h, double eps, tfun fun, double s);

double fun1(double x);

double fun2(double x);

int main()

{int var;

double shag, rez, s = 0;

tfun fun;

double a, b, eps;

clrscr();

for(;;)

{

//Выбор действия

cout << "\n Возможный вид действия:\n";

cout << " 1 - нахождение определенного интеграла функции sin(x)\n";

cout << " 2 - нахождение определенного интеграла функции -x^2 + 8\n";

cout << " 3 - завершение задачи\n";

cout << " Введите вид действия ->";

cin >> var;

switch(var)

{case 1: fun = fun1;

break;

case 2: fun = fun2;

break;

default:return 0;

}

//Ввод исходных данных

cout << " Введите границы интервала a и b, ";

cout << " начальный шаг и точность вычисления\n";

cin >> a >> b >> shag >> eps;

rez = integral(a, b, shag, eps, fun, s);

//Вывод результата

cout.precision(4);

cout << " Результат =" << rez << endl;

}

}

//нахождение определенного интеграла методом криволинейных трапеций

double integral(double a, double b, double h, double eps, tfun fun, double s1)

{double x, s = 0;

for(x = a + h / 2; x < b; x += h)

s += fun(x);

s *= h;

if (fabs(s - s1) > eps)

{h /= 2;

s = integral(a, b, h, eps, fun, s);

}

return s;

}

//описание вида функции №1

double fun1(double x)

{return (sin(x));

}

//описание вида функции №2

double fun2(double x)

{return (- x * x + 8);

}





Дата публикования: 2015-09-18; Прочитано: 169 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...