C/C++

Что не так с кодом?

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

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
const double a = -2.0, b = -0.1;
const double h = (b - a) / 10.0;
const double end = b + h / 10.0;
const unsigned k = 140;
cout << fixed << setprecision(15);
for (double x = a; x <= end; x += h) {
cout << setw(19) << x * cos(x);
double sum = 0.0;
for (unsigned n = 0; n < k; ++n) {
double fc = 1.0;
for (unsigned m = 1; m <= 2 * n; ++m) fc *= m;
sum += pow(-1, n) * pow(x, 2 * n + 1) / fc;
}
cout << setw(21) << sum << '\n';
}
system("pause > nul");
}
АК
Анвар Касимов
56 439
Лучший ответ
Олег Котляренко извините, но мы только начали условия и половину текста я не понимаб.
Руслан Фахритдинов sum += pow(-1, n) * (pow(x, nn + 1) / fact(nn)); - бессмысленный обогрев вселенной.
Александр Гончаров (◔‿◔) Так, ради анекдота! Эта задача в последнее время мелькает здесь что-то уж черезчур часто и, насколько мне помнится, я к этой задаче ответ даю ужè в третий раз. Что такое, зациклило кого-то, что-ли, что она, задача эта злополучная, вновь и вновь всплывает с самого глубокого утопистого дна липкой болотистой трясины с каким-то новым невероятным блистанием своей чешуи? ◉‿◉
Надеюсь, вопрос по этой задачи - последний, хотя кто его знает... А насчёт "обогрева вселенной" - это бы ещё чья корова мычала, ибо сумма по условию задачи должна браться от нулевого n до n, равного ста сорокà, хотя достаточно взять количество членов ряда на порядок меньше - результаты не изменятся. Вон же ссылка есть во втором ответе, кому надо - пусть проверят и сам во всём убедятся! Ой, умора, ха-ха-ха!.
(✷‿✷)
double a, b, s, h, y, t, q;
double x = a = -2, b = -0.1;
меняешь на:
double a = -2, b = -0.1, x, s, h, y, t, q;

for (x = a; x < b; x += h)
меняешь на:
for (x = a; x <= b; x += h)

cout << "y= " << y << setw(12) << "s= " << s << endl;
}
меняешь на:
}
cout << "y= " << y << setw(12) << "s= " << s << endl;

В результате всё работает: https://onlinegdb.com/6U_OBMTwc
Олег Котляренко спасибо вам огромное, за то, что всё время помогаете мне! На каждую мою просьбу адекватный ответ, ценю!
Вот так писàть не нужно:
double a, b, s, h, y, t, q;
double x = a = -2, b = -0.1;
Из-за double x = a = -2 может вылезть ошибка use of undeclared identifier 'a' ! Или ещё может выдать redefinition 'b'. ʘ‿ʘ
Нужно так:
double a = -2, b = -0.1, h = (b - a) / 10, h, q, s, t, x, y;
Фигурная скобка стоит под выводом cout, a надо над cout.
x < b на х <= b менять совершенно необязательно - результаты от этого ничуть не изменятся, но можно и поменять - хýда не будет!.
Сергей Пьянков
Сергей Пьянков
29 440
6ayuke1 huolleleii4i4o3oldlne mdke 4k
Александр Ten
Александр Ten
7 902