#include "StdAfx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
long double fact(int N)
{
if(N < 0) // если пользователь ввел отрицательное число
return 0; // возвращаем ноль
if (N == 0) // если пользователь ввел ноль,
return 1; // возвращаем факториал от нуля - не удивляетесь, но это 1
else // Во всех остальных случаях
return N * fact(N - 1); // делаем рекурсию.
}
int main()
{
double a,b,h,x,s,p;
float y;
int n,i;
cout << "Vvedite a,b,n" << endl;
cin >> a >> b >> n;
h=(b-a)/10;
x=a;
do
{
p=1;
//s=-(pow(2*x,2))/2;
s=0; //решил считать по-своему
for (i=1; i<=n; i++)
{
//p *= (-1)*pow((2*x),2)/2*i; //- не обращайте внимания, неудачные попытки
p=powf(-1,i)*pow(2*x,2*i)/(fact(2*i)); //fact - факториал, я его сверху над телом основным написал
s += p;
}
y=2*(cos(x)*cos(x)-1);
cout << setw(15) << x << setw(15) << y << setw(15) << s << endl;
x += h;
}
while (x <= b+h/2);//не совсем понял нахрена такое условие, видать чтобы можно было вместо <= поставить <
cout << endl;
system("pause");
return 0;
}
Comments