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

Тема в разделе "C/C++/C#", создана пользователем Lizzz, 20 мар 2013.

  1. Lizzz

    Lizzz New Member

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

    При некоторых заданных 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;

    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    p = x;
    s = 0;
    for (int i = 0; i < n; ++i) {
    if (i%2) z = -1;
    else z = 1;
    s += z * p/(i*2 + 1);
    p = p * x * x;
    }
    вроде бы так, не проверял

    Добавлено:
    как это проявляется?
     
  3. Lizzz

    Lizzz New Member

    Регистрация:
    26 янв 2013
    Сообщения:
    0
    Симпатии:
    0
    Я представила в виде ряда саму функцию, именно в этом цикле вроде бы все правильно вычисляется. Но программа не проходит отладку, внимательно проверила, вроде ничего нигде не подчеркивает, в чем проблема, не пойму
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    для случая b надо хранить предыдущее значение члена ряда, как то так:
    Код (Text):
    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;
    }
    тоже не проверял

    Добавлено:
    используй пошаговый режим

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

    Lizzz New Member

    Регистрация:
    26 янв 2013
    Сообщения:
    0
    Симпатии:
    0
    Ой, большое спасибо, правда, эта задача уже заработала))) А доброе дело только на нее распространяется? Нельзя ли в другой задаче помочь найти ошибку?)) Точнее я даже знаю, где она, только не знаю, как исправить)
     
Загрузка...

Поделиться этой страницей