C/C++

Скажите пожалуйста что не так с кодом?

Андрей, а что щас не так?

#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
double x, s, q, h, y, t, q;
int n;
double a = -2, b = -0.1;
h = (b - a) / 10;
s = x;
t = x;
q = -x * x;
for (x = a; x < b; x += h)
{
y = x * cos(x);
for (n = 1; n < 141; n++)
{
t = q * pow(x, 2 * n + 1) / (2 * n * (2 * n - 1));
s += t;
}
cout << "y= " << y << setw(12) << "s= " << s << endl;

}

}
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double fact(int n) {
return n == 0? 1. : double(n) * fact(n - 1);
}
double cos_x(double x) {
static const auto k = 140U;
auto sum = 0.0;
for (auto n = 0U; n < k; ++n) {
auto nn = 2 * n;
sum += pow(-1, n) * (pow(x, nn + 1) / fact(nn));
}
return sum;
}
int main() {
const auto a = -2.0, b = -0.1;
const auto h = (b - a) / 10.0;
const auto end = b + h / 10.0;
cout << fixed << setprecision(15);
for (auto x = a; x <= end; x += h) {
cout << setw(19) << x * cos(x) << setw(21) << cos_x(x) << '\n';
}
system("pause > nul");
}
АР
Александр Ротовский
53 665
Лучший ответ
Борис Маргарян дак а где у меня там 2n+1?
Борис Маргарян там есть 2n-1 но ведь это формула факториала 2n!= (2 * n * (2 * n - 1))
Все же ок, не?
(◔‿◔) М-да уж! s, t, q в первых операторах присвоения им значений х, х, -х² должны быть внутри внешнего цикла, а не снаружи него, но снаружи внутреннего цикла! Внутри внутреннего цикла t на каждом шаге умножается на q и делится на 2n·(2n-1) и ни на что её больше умножать не нужно, особенно на какие-то левые невесть откуда взявшиеся pow'ы! А степени и факториалы вычисляются автоматически и модуль cmath (или math.h) тут может потребоваться только для сравнения вычисленных значений x·cos x со значениями этой же функции x·cos x, вычисленными с помощью стандартной математической библиотеки, а вовсе не для вычисления степеней pow!
ʘ‿ʘ