C/C++

Программирование в с++

Для x, изменяющегося в интервале от x0 до xk с шагом h, вычислить значения бесконечной суммы S(x) с точностью ε=0.00001 и функции y(x).Значения x0,xk и h вводятся с клавиатуры
/*1*/
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main()
{
#define eps 0.00001
double x0, xk, h;
double y, yp;
long long double factor;
double sgn;
double x;
double n;
long long double xp;

printf("x0:");
scanf("%lf", &x0);
printf("xk:");
scanf("%lf", &xk);
printf("h:");
scanf("%lf", &h);

for(x = x0 + h; x < xk; x += h)
{
sgn = 1;
factor = 1;
y = 0; yp = 1;
xp = x;
for(n = 0; fabs(y - yp) > eps; n++)
{
yp = y;
y += (sgn * xp) / factor;
sgn = -sgn;
factor *= n + 1;
xp *= x * x;
}
printf("S(%.3f) = %.5f\n", x, y);
}

printf("Press any key for continue...");
getch();
return 0;
}

/*2*/
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main()
{
#define eps 0.00001
float x0, xk, h;
float y, yp;
float x;

printf("x0:");
scanf("%f", &x0);
printf("xk:");
scanf("%f", &xk);
printf("h:");
scanf("%f", &h);

for(x = x0 + h; x < xk; x += h)
{
y = 0; yp = 1;
while(fabs(y - yp) > eps)
{
yp = y;
y = x * exp(-1 * (x * x));
}
printf("y(%.3f) = %.5f\n", x, y);
}

printf("Press any key for continue...");
getch();
return 0;
}
СС
Сергей Суинов
11 953
Лучший ответ
Сергей Суинов /*1*/
#include
#include
#include

int main()
{
#define eps 0.00001
double x0, xk, h;
double y, yp;
long double factor;
double sgn;
double x;
double n;
long double xp;

printf("x0:");
scanf("%lf", &x0);
printf("xk:");
scanf("%lf", &xk);
printf("h:");
scanf("%lf", &h);

for(x = x0 + h; x < xk; x += h)
{
sgn = 1;
factor = 1;
y = 0; yp = 1;
xp = x;
for(n = 0; fabs(y - yp) > eps; n++)
{
yp = y;
y += (sgn * xp) / factor;
sgn = -sgn;
factor *= n + 1;
xp *= x * x;
}
printf("S(%.3f) = %.5f\n", x, y);
}

printf("Press any key for continue...");
getch();
return 0;
}