Другие языки программирования и технологии

Помогите решить задачу по программированию

C++
int n;
double x, a, e, s, q;
cin >> x >> e;
n = 0;
a = 1.0;
s = 0.0;
q = x * x;
while(1) {
s += a;
if(a < e) { break; }
n += 2;
a *= q / (n * n - n);
}
cout << s;
Oleg Ginc
Oleg Ginc
87 413
Лучший ответ
#include <iostream>
#include <cmath>
using namespace std;
double eps(double l = 0, double r = 1.0) {
cout << "Eps: ";
double e;
do { cin >> e; } while (e >= r || e <= 0);
return e;
}
unsigned long long fact(int n) {
auto f = 1ull;
for (auto i = 2; i <= n; ++i) f *= i;
return f;
}
double func(double x, double e) {
auto sum = 1.0;
auto ex = 2;
double member;
do {
member = pow(x, ex) / fact(ex);
sum += member;
ex += 2;
} while (member > e);
return sum;
}
double control(double x) {
return (exp(x) + exp(-x)) / 2;
}
int main() {
cout << "x: ";
double x;
cin >> x;
auto e = eps();
auto res = func(x, e);
cout
<< "Result:\t\t" << res
<< "\nControl:\t" << control(x)
<< endl;
cin.ignore();
cin.get();
}
Колян Ким
Колян Ким
50 453