Скачиваний:
61
Добавлен:
15.06.2014
Размер:
35.84 Кб
Скачать

Белорусский государственный университет информатики и радиоэлектроники

Кафедра вычислительных методов и программирования

Лабораторная работа № 8

Тема: «Программирование с использованием функций»

Вариант 4

Выполнил студент группы № 922403

Олешкевич Андрей Сергеевич

Приняла: Коренская И.H

Минск 2009

Задание: вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε. Вывести число итераций, необходимое для достижения заданной точности. Вычисление S(x) и Y(x) оформить в виде функций.

a

b

S(x)

ε

Y(x)

1

2

3

4

5

6

4

-3

3

10-4

9x

Листинг программы:

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

typedef double (*uf)(double, double, int &);

void tabl(double, double, double, double, uf);

double y(double, double, int &);

double s(double, double, int &);

int main()

{

double a, b, h, eps;

cout <<"Input a, b, h, eps: ";

cin >> a >> b >> h >> eps;

cout << setw(8) <<"x"<<setw(15)<<"y(x)"<<setw(10)<<"k" << endl;

tabl(a, b, h, eps, y);

cout << endl;

cout << setw(8) <<"x"<<setw(15)<<"s(x)"<<setw(10)<<"k" << endl;

tabl(a, b, h, eps, s);

return 0;

}

void tabl(double a, double b, double h, double eps, uf fun)

{

int k = 0;

double sum;

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

{

sum = fun(x, eps, k);

cout << setw(8) <<x<<setw(15)<<sum<<setw(10)<<k << endl;

}

}

double y(double x, double eps, int &k)

{

return pow(9, x);

}

double s(double x, double eps, int &k)

{

double a = 1, c, sum = 1;

c = x;

k = 1;

while(fabs(c) > eps)

{

c = log(9) * x/k;

a*=c;

sum+=a;

k++;

}

return sum;

}

Выводы: Проведя данную лабораторную работу, я научился использовать в своих программах функции. Также освоил указатели на функцию и передачу параметров функциям по ссылке и указателю.