#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
// Прототипы функций
double Summa (double, int); // Передача параметров по значению
void Summa (double*, int*,double*); // Передача параметров по указателю
void Summa (double&, int&,double&); // Передача параметров по ссылке
int main()
{ // Начало главной функции
double s, x, a, b, h;
int k;
cout << "Vvedite a, b, h, k:\n";
cin >> a >> b >> h >> k; // Ввод значений:: 0.1 1 0.1 20
// Вывод строки заголовка таблицы
cout << "\n Value" << setw(20) << "Pointer" << setw(24) << "Reference\n";
x=a;
do // Начало цикла по x
{ // Вывод таблицы
// Передача параметров по значению
cout << setw(5) << x << setw(10) << Summa(x, k);
Summa(&x, &k,&s); // Передача параметров по указателю
cout << setw(10) << x << setw(10) << s;
Summa(x, k, s); // Передача параметров по ссылке
cout << setw(10) << x << setw(10) << s << endl;
x += h; // Изменение значения x на величину шага h
} while (x <= b + h / 2); // Проверка условия продолжения цикла по x
cout << endl; // Переход на новую строку
return 0;
}
double Summa (double x, int k) // Передача параметров по значению
|
|
{
double s = 0;
int i;
s = 0; // Начальное значение при k=0
for (i = 1; i <= k; i++) // Вычисление суммы
{
s += pow(x, i - 1) / (2 * i + 1);
}
return s; // Передача результата s в главную функцию
}
// Передача параметров по указателю
void Summa (double *x, int *k, double *s)
{
int i;
*s = 0; // Начальное значение при k = 0
for (i = 1; i <= *k; i++) // Вычисление суммы
{
*s += pow(*x, i - 1) / (2 * i + 1);
}
}
// Передача параметров по ссылке
void Summa (double &x, int &k, double &s)
{
int i;
s = 0; // Начальное значение при k = 0
for (i = 1; i <= k; i++) // Вычисление суммы
{
s += pow(x, i - 1) / (2 * i + 1);
}
} // Конец главной функции