#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <math.h>
double Summa(double, int);
double Correct(double, int);
void Summa(double*, int*, double*);
void Summa(double&, int&, double&);
using namespace std;
int main()
{
double s, x, a, b, h;
int k;
cout << "Vvedite a,b,h,k" << endl;
//cin >> a >> b >> h >> k;// тут ввожу 0.1 1.2 0.1 20
a = 0.0;
b = 1.2;
h = 0.1;
k = 20;
//Вывод заголовка
cout << "\n Value" << setw(20) << "Pointer" << setw(24) << "Reference \n";
x = a;
do
{ //Вывоод таблицы
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;
cout << setw(10) << x << setw(10) << Correct(x,k) << endl;
x+=h;
} while (x <= b+h/2);
cout<<endl;
return 0;
}
double Summa(double x, int k)
{
double s;
const double PI = 3.14159265;
int i;
s = 0;
for (i = 1; i <=k; i++)
s += cos(i*PI/4)/pow(i,2)*pow(x,i);
return s;
}
void Summa(double *x, int *k, double *s)
{
int i;
const double PI = 3.14159265;
*s = 0;
for (i = 1; i <= *k; i++)
*s += cos(i*PI / 4) / pow(i, 2)*pow(*x, i);
}
void Summa(double &x, int &k, double &s)
{
int i;
const double PI = 3.14159265;
s = 0;
for ( i = 1; i <=k; i++)
s += cos(i*PI / 4) / pow(i, 2)*pow(x, i);
}
double Correct(double x, int k)
{
static double cs[8] = { 1, 1.0/sqrt(2),0,-1.0/sqrt(2),-1,-1.0/sqrt(2),0,1.0/sqrt(2)};
double sum = 0.0, t = 1.0;
for(int i = 1; i <= k; ++i)
sum += (t*=x)*cs[i%8]/(i*i);
return sum;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxtYXRoLmg+CmRvdWJsZSBTdW1tYShkb3VibGUsIGludCk7CmRvdWJsZSBDb3JyZWN0KGRvdWJsZSwgaW50KTsKCnZvaWQgU3VtbWEoZG91YmxlKiwgaW50KiwgZG91YmxlKik7CnZvaWQgU3VtbWEoZG91YmxlJiwgaW50JiwgZG91YmxlJik7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCkKewogICAgZG91YmxlIHMsIHgsIGEsIGIsIGg7CiAgICBpbnQgazsKICAgIGNvdXQgPDwgIlZ2ZWRpdGUgYSxiLGgsayIgPDwgZW5kbDsKICAgIC8vY2luID4+IGEgPj4gYiA+PiBoID4+IGs7Ly8g0YLRg9GCINCy0LLQvtC20YMgMC4xICAxLjIgMC4xIDIwCiAgICBhID0gMC4wOwogICAgYiA9IDEuMjsKICAgIGggPSAwLjE7CiAgICBrID0gMjA7CgogICAgLy/QktGL0LLQvtC0INC30LDQs9C+0LvQvtCy0LrQsAogICAgY291dCA8PCAiXG4gVmFsdWUiIDw8IHNldHcoMjApIDw8ICJQb2ludGVyIiA8PCBzZXR3KDI0KSA8PCAiUmVmZXJlbmNlIFxuIjsKICAgIHggPSBhOwogICAgZG8KICAgIHsgLy/QktGL0LLQvtC+0LQg0YLQsNCx0LvQuNGG0YsKICAgICAgICBjb3V0IDw8IHNldHcoNSkgPDwgeCA8PCBzZXR3KDEwKSA8PCBTdW1tYSh4LCBrKTsKICAgICAgICBTdW1tYSgmeCwgJmssICZzKTsKICAgICAgICBjb3V0IDw8IHNldHcoMTApIDw8IHggPDwgc2V0dygxMCkgPDwgczsKICAgICAgICBTdW1tYSh4LCBrLCBzKTsKICAgICAgICBjb3V0IDw8IHNldHcoMTApIDw8IHggPDwgc2V0dygxMCkgPDwgczsKICAgICAgICBjb3V0IDw8IHNldHcoMTApIDw8IHggPDwgc2V0dygxMCkgPDwgQ29ycmVjdCh4LGspIDw8IGVuZGw7CiAgICAgICAgeCs9aDsKICAgIH0gd2hpbGUgKHggPD0gYitoLzIpOwogICAgY291dDw8ZW5kbDsKICAgIHJldHVybiAwOwp9CmRvdWJsZSBTdW1tYShkb3VibGUgeCwgaW50IGspCnsKICAgIGRvdWJsZSBzOwogICAgY29uc3QgZG91YmxlIFBJID0gMy4xNDE1OTI2NTsKICAgIGludCBpOwogICAgcyA9IDA7CiAgICBmb3IgKGkgPSAxOyBpIDw9azsgaSsrKQogICAgICAgIHMgKz0gY29zKGkqUEkvNCkvcG93KGksMikqcG93KHgsaSk7CiAgICByZXR1cm4gczsKfQp2b2lkIFN1bW1hKGRvdWJsZSAqeCwgaW50ICprLCBkb3VibGUgKnMpCnsKICAgIGludCBpOwogICAgY29uc3QgZG91YmxlIFBJID0gMy4xNDE1OTI2NTsKICAgICpzID0gMDsKICAgIGZvciAoaSA9IDE7IGkgPD0gKms7IGkrKykKICAgICAgICAqcyArPSBjb3MoaSpQSSAvIDQpIC8gcG93KGksIDIpKnBvdygqeCwgaSk7Cn0Kdm9pZCBTdW1tYShkb3VibGUgJngsIGludCAmaywgZG91YmxlICZzKQp7CiAgICBpbnQgaTsKICAgIGNvbnN0IGRvdWJsZSBQSSA9IDMuMTQxNTkyNjU7CiAgICBzID0gMDsKICAgIGZvciAoIGkgPSAxOyBpIDw9azsgaSsrKQogICAgICAgIHMgKz0gY29zKGkqUEkgLyA0KSAvIHBvdyhpLCAyKSpwb3coeCwgaSk7Cn0KCmRvdWJsZSBDb3JyZWN0KGRvdWJsZSB4LCBpbnQgaykKewogICAgc3RhdGljIGRvdWJsZSBjc1s4XSA9IHsgMSwgMS4wL3NxcnQoMiksMCwtMS4wL3NxcnQoMiksLTEsLTEuMC9zcXJ0KDIpLDAsMS4wL3NxcnQoMil9OwogICAgZG91YmxlIHN1bSA9IDAuMCwgdCA9IDEuMDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gazsgKytpKQogICAgICAgIHN1bSArPSAodCo9eCkqY3NbaSU4XS8oaSppKTsKICAgIHJldHVybiBzdW07Cn0KCg==