Слайд 2
![typedef double (*TypeFun) ( double ); // -------------- Прототипы функций](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-1.jpg)
typedef double (*TypeFun) ( double );
// -------------- Прототипы функций --------------------
double fun
(double); // Y(x)
double sum (double); // S(x)
double razn (double); // |s-y|
void Out ( TypeFun /* double ( *f ) (double х) */,
double, double, double);
int n; // Глобальная переменная – УБРАТЬ!!
Слайд 3
![void main( ) { double a, b, h; . .](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-2.jpg)
void main( )
{
double a, b, h;
. . . Ввод переменных
a, b, h и n . . .
cout << " Вывод результатов для функции " << endl;
Out ( fun, a, b, h );
cout << " Вывод результатов для суммы " << endl;
Out ( sum, a, b, h );
cout << " Вывод результатов для разности " << endl;
Out ( razn, a, b, h );
}
Слайд 4
![//-------------- Функция для Y(x) ------------------------- double fun (double x) {](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-3.jpg)
//-------------- Функция для Y(x) -------------------------
double fun (double x)
{
return «Выражение для
расчета функции»;
}
//-------------- Функция для | y – s | ---------------------
double razn (double x)
{
return fabs ( fun (x) – sum (x) );
}
Слайд 5
![//--------------- Функция для расчета суммы ------------ double sum (double x)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-4.jpg)
//--------------- Функция для расчета суммы ------------
double sum (double x)
{
double s,
r ;
s = «Начальное значение суммы»;
r = «Начальное значение рекуррентной части»;
for ( int k = 1; k <= n; ++k ) {
r = r * «Нужный коэффициент»;
s = s + «Текущее значение элемента»;
}
return s;
}
Слайд 6
![//-------------------- Вывод результатов ------------------- void Out (TypeFun f /*double (](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-5.jpg)
//-------------------- Вывод результатов -------------------
void Out (TypeFun f /*double ( * f)
(double х)*/,
double xn, double xk, double h)
{
for ( double x = xn; x <= xk; x += h )
cout << "x = " << x << "\t res = " << f (x) << endl;
// Или printf (" x = %5.2lf, res = %10.6lf \n ", x, f(x));
}
Слайд 7
![Основную функцию можно реализовать иначе, создав массив функций и массив строк, остальное как и раньше. Например](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-6.jpg)
Основную функцию можно реализовать иначе, создав массив функций и массив строк,
остальное как и раньше.
Например
Слайд 8
![void main( ) { double a, b, h; TypeFun mas](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-7.jpg)
void main( )
{
double a, b, h;
TypeFun mas [ 3
] = { fun, sum, razn };
char text [3] [10] = { "function", "summa", "raznoct" };
. . . Ввод переменных a, b, h и n . . .
for ( int i = 0; i < 3; ++i ) {
cout << " Results to " << text [ i ] << endl;
Out ( mas [ i ], a, b, h );
}
}
Слайд 9
![Задание 4. С выбором функции, как в методичке По заданию](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-8.jpg)
Задание 4. С выбором функции, как в методичке
По заданию лабораторной работы
№3 написать программу расчета выбранной функции Y(x), S(x) и |Y(x)–S(x)|, вид которой в свою очередь передается в качестве параметра в функцию вывода (Out ).
Слайд 10
![Разница реализации этого задания может быть ТОЛЬКО в основной функции,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-9.jpg)
Разница реализации этого задания может быть ТОЛЬКО в основной функции, остальное
останется как и для предыдущего примера.
Например
Слайд 11
![void main( ) { double a, b, h; int num;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/580089/slide-10.jpg)
void main( )
{
double a, b, h; int num;
TypeFun ff;
char
text [3] [10] = { "function", "summa", "raznoct" }; . . . . Ввод переменных a, b, h и n . . .
cout << " Functions : 1 - y, 2 - s, else |s - y| " << endl;
switch ( _getch() ) {
case '1' : ff = fun; num = 0; break;
case '2' : ff = sum; num = 1; break;
default : ff = razn; num = 2;
}
cout << " Results to " << text [ num ] << endl;
Out ( ff, a, b, h );
}