• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Помогите Пожалуйста, Не Работает Задача

  • Автор темы Lizzz
  • Дата начала
L

Lizzz

Привет всем. Уже выкладывала эту задачу с просьбой помочь с дальнейшим решением. На мою тему откликов не последовало. Я вроде как дописала эту программу сама, но она что-то не работает. Может быть, кто-нибудь сможет помочь понять, в чем проблема. Очень нужно. Спасибо заранее.

При некоторых заданных x, N и E, определяемых вводом, вычислить:
a)сумму N слагаемых заданного вида;
:)сумму тех слагаемых, которые по абсолютной величине больше Е.
Для случая b выполнить суммирование для двух значений Е, отличающихся на порядок, и при этом определить количество слагаемых, включенных в сумму. Сравнить результаты с точным значением функции, для которой данная сумма определяет приближенное значение при x, лежащем в интервале (-R, R).
arctg(x)= x - (x^3)/3 + (x^5)/5 - (x^7)/7 + (x^9)/9 ... (R = 1)
Вот код:


#include <iostream>
#include <cmath>

using namespace std;

int main()
{
int i, ks;
float s, sl, n, e1, e2, tz, E, x;
double atan(int x );
bool t;
cout << "n = ";
cin >> n;
cout << "Введите x от -1 до 1 ";
cin >> x;
cout << "e1 = ";
cin >> e1;
cout << "c2 = ";
cin >> e2;
s = 0; ks = 0; E = e1 + e2; t = 1;
for (i = 0; i <= n; i++)
{
{
sl = pow( -1, n ) * (pow( x,(2* n + 1)))/ (2*n +1);
s = s + sl;

}

if (abs(sl) <= E) t = 0;
else
{
sl = pow( -1, n ) * (pow( x,(2*n + 1))) / (2*n +1);
s = s + sl;
ks = ks + 1;
}
t = 1;
tz = atan(x);

cout<< "Сумма слагаемых заданного вида" << s << endl;
cout << "Точное значение функции" << tz;
cout << "Количество слагаемых равно " << ks << endl;

}
return 0;

}
 
L

Lizzz

Я представила в виде ряда саму функцию, именно в этом цикле вроде бы все правильно вычисляется. Но программа не проходит отладку, внимательно проверила, вроде ничего нигде не подчеркивает, в чем проблема, не пойму
 
R

rrrFer

для случая b надо хранить предыдущее значение члена ряда, как то так:
Код:
p = x;
s = 0;
prev = 0;
for (int i = 0;; ++i) {
if (i%2) z = -1;
else z = 1;
s += z * p/(i*2 + 1);
if (fabs(z * p/(i*2 + 1) + prev) < eps)
break;
prev = z * p/(i*2 + 1);
p = p * x * x;
}

тоже не проверял

Добавлено:
Но программа не проходит отладку, внимательно проверила, вроде ничего нигде не подчеркивает, в чем проблема, не пойму
используй пошаговый режим

Добавлено: если есть скайп и аська - пиши в аську (мой номер в подписи) логин скайпа. Покажешь в скайпе экран, научу пользоваться отладчиком и вместе найдем ошибку. Я сегодня готов сделать одно доброе дело ))
 
L

Lizzz

Ой, большое спасибо, правда, эта задача уже заработала))) А доброе дело только на нее распространяется? Нельзя ли в другой задаче помочь найти ошибку?)) Точнее я даже знаю, где она, только не знаю, как исправить)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!