Вычислить С Точностью ε Сумму И Указать Количество Учтенных Слаг

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

  1. Решала

    Решала New Member

    Регистрация:
    7 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    Даны действительные x,ε(x ≠ 0,ε > 0)и целые k,a,n числа. Вычислить с точностью
    ε сумму и указать количество учтенных слагаемых. Считать, что требуемая
    точность достигнута, если вычислена сумма нескольких первых слагаемых и
    очередное слагаемое оказалось по модулю меньше, чем ε , - это и все последующие
    слагаемые можно уже не учитывать. Проверить правильность вычислений на
    тестовых примерах, используя возможности отладчика, проследить изменение
    значений слагаемых суммы ряда, выполнив отладку цикла.

    Подскажите пожалуйста...

    2.jpg
    Код (Text):
    #include "stdafx.h"
    #include <iostream>
    #include <cmath>
    #include <clocale>
    using namespace std;


    int _tmain(int argc, _TCHAR* argv[])
    {
    setlocale(0,"Rus");
    double x, e;
    cout<<"Введите значение аргумента x = ";
    cin>>x;
    cout<<"Введите значение точности вычисляемой суммы (e>0) e = ";
    cin>>e;
    double summa = 0; //в переменной summa накапливаем сумму ряда
    if (e>0) //точность E должна быть больше нуля
    {
    //вычисляем первое слагаемое ряда
    int k = 2k+1;
    double k_element = pow(-1.,k*(x,4k+3));
    //вычисление суммы ряда
    while (k_element > e && k <= INT_MAX)
    {
    cout<<"k = "<<k<<"\t"<<k_element<<"\n";
    k_element *= x;
    k_element /= k;
    summa += k_element/4k+3;
    k++;
    }
    cout<<"Сумма ряда = "<<summa<<"\n";
    cout<<"Количество учтенных слагаемых = "<<k-1<<"\n";
    }
    else  
    cout<<"Ошибка ввода. Точность больше нуля!\n";
    system("pause");
    return 0;
    }
     
  2. rrrFer

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

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    приведенная программа не работает или работает неправильно? - в чем подсказать?
     
  3. Решала

    Решала New Member

    Регистрация:
    7 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    компилятор выдаёт ошибку, не компилируеться... не могу понять, в чём дело!
     
  4. rrrFer

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

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    какую ошибку выдает компилятор?
    и какой именно компилятор вы используете?

    у меня компилятор gcc, он будет ругаться уже на первой строке:
    #include "stdafx.h"

    а потом еще тут: (потому что тип _TCHAR не стандартный)
    int _tmain(int argc, _TCHAR* argv[])

    а потом он скажет, что функции main нету в вашей программе (_tmain он не принимает во внимание).

    Ну а дальше я код смотреть не стал, не знаю что ему еще может не понравиться.

    У вас какой компилятор, какие ошибки? - как грится..."это форум программистов, а не экстрасенсов", угадывать тут никто не будет.
     
  5. Решала

    Решала New Member

    Регистрация:
    7 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    Вот ошибка:
    1>------ Rebuild All started: Project: Lab_1, Configuration: Debug Win32 ------
    1> stdafx.cpp
    1> Lab_1.cpp
    1>c:\users\сергей\documents\visual studio 2012\projects\kytepov\lab_1\lab_1.cpp(24): error C2059: syntax error : 'bad suffix on number'
    1>c:\users\сергей\documents\visual studio 2012\projects\kytepov\lab_1\lab_1.cpp(24): error C2146: syntax error : missing ')' before identifier 'k'
    1>c:\users\сергей\documents\visual studio 2012\projects\kytepov\lab_1\lab_1.cpp(24): error C2059: syntax error : ')'
    1>c:\users\сергей\documents\visual studio 2012\projects\kytepov\lab_1\lab_1.cpp(31): error C2059: syntax error : 'bad suffix on number'
    1>c:\users\сергей\documents\visual studio 2012\projects\kytepov\lab_1\lab_1.cpp(31): error C2146: syntax error : missing ';' before identifier 'k'
    1>c:\users\сергей\documents\visual studio 2012\projects\kytepov\lab_1\lab_1.cpp(31): warning C4552: '+' : operator has no effect; expected operator with side-effect
    ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

    Работаю в Visual Studio 2012, консольное приложение!
     
  6. rrrFer

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

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Но это ошибки не от того кода, который ты на форум кинул.
    компилятор тебе сообщил об ошибках в 24 и 31 строчках.
    В 24 ему не хватает скобочки и не нравится число перед переменной, в частности.
    Но в коде, который лежит на форуме 24 строка состоит только из фигурной скобки ("{").

    Научись уже задавать вопросы нормально.

    Скорее всего 24 строка кода форума - это 21 строка в том коде что ты компилировал.
    Код (Text):
    double k_element = pow(-1.,k*(x,4k+3));
    Что такое 4k ?

    А 31 строка соответствует 28.

    Код (Text):
    summa += k_element/4k+3;
    имена переменных не могут начинаться с цифры (если ты хотел сделать 4к переменной) и 4к - это не число.


    -----------добавил


    Да и вообще все как-то не так, по заданию тебе нужен факториал, где он?
    Я не вижу где ты инициализируешь переменные перед циклом (в задании сказано что сумма считается от k = 0, а где ты присваиваешь переменной-счетчику ноль?)

    Это типа k-тый элемент?:
    Код (Text):
    k_element *= x;
    k_element /= k;
    Тогда у тебя ряд (x^n) / (k^n), а не тот, который по заданию.
     
  7. Решала

    Решала New Member

    Регистрация:
    7 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    вот и попросил помощи, разобраться в коде, можешь редактировать... я просто только начинающий, поступил на физ-тех помоги, а!
     
  8. Решала

    Решала New Member

    Регистрация:
    7 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    Переписал код, вот теперь компилятор не ругается, всё работает - только не правильно считает - помоги пожалуйсто!

    #include "stdafx.h"
    #include <iostream>
    #include <cmath>
    #include <clocale>
    using namespace std;


    int _tmain(int argc, _TCHAR* argv[])
    {
    setlocale(0,"Rus");
    double x, e;
    cout<<"Введите значение аргумента x = ";
    cin>>x;
    cout<<"Введите значение точности вычисляемой суммы (e>0) e = ";
    cin>>e;
    double summa = 0; //в переменной summa накапливаем сумму ряда
    if (e>0) //точность E должна быть больше нуля
    {
    //вычисляем первое слагаемое ряда
    double summa = 0.5;
    double k_element=1;
    int k = 1;
    //вычисление суммы ряда
    while (k_element > e && k <= INT_MAX)
    {
    cout<<"k = "<<k<<"\t"<<k_element<<"\n";
    k_element *=((1.,k)*x,4*k+3);
    k_element /= 2*k+1;
    k++;
    summa /=4*k+3;
    }
    cout<<"Сумма ряда = "<<summa<<"\n";
    cout<<"Количество учтенных слагаемых = "<<k-1<<"\n";
    }
    else
    cout<<"Ошибка ввода. Точность больше нуля!\n";
    system("pause");
    return 0;
    }


    Добавлено:
    Переписал код, вот теперь компилятор не ругается, всё работает - только не правильно считает - помоги пожалуйсто!

    #include "stdafx.h"
    #include <iostream>
    #include <cmath>
    #include <clocale>
    using namespace std;


    int _tmain(int argc, _TCHAR* argv[])
    {
    setlocale(0,"Rus");
    double x, e;
    cout<<"Введите значение аргумента x = ";
    cin>>x;
    cout<<"Введите значение точности вычисляемой суммы (e>0) e = ";
    cin>>e;
    double summa = 0; //в переменной summa накапливаем сумму ряда
    if (e>0) //точность E должна быть больше нуля
    {
    //вычисляем первое слагаемое ряда
    double summa = 0.5;
    double k_element=1;
    int k = 1;
    //вычисление суммы ряда
    while (k_element > e && k <= INT_MAX)
    {
    cout<<"k = "<<k<<"\t"<<k_element<<"\n";
    k_element *=((1.,k)*x,4*k+3);
    k_element /= 2*k+1;
    k++;
    summa /=4*k+3;
    }
    cout<<"Сумма ряда = "<<summa<<"\n";
    cout<<"Количество учтенных слагаемых = "<<k-1<<"\n";
    }
    else
    cout<<"Ошибка ввода. Точность больше нуля!\n";
    system("pause");
    return 0;
    }
     
  9. rrrFer

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

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    #include <iostream>
    #include <cmath>

    int main(){
    int k;
    float x, k4, k2, x4k, s, e;

    do {
    std::cout << "x: ";
    std::cin >> x;
    } while (x > 1 || x < -1);

    do {
    std::cout << "e: ";
    std::cin >> e;
    } while (e < 0);

    k = 0, k4 = 3, k2 = 1; x4k = x * x * x, s = 0;

    for (;;) {
    float t = (k&1?-1:1) * x4k / (k2 * k4);
    if (fabs(t) < e)
    break;

    ++k;
    x4k *= x * x * x * x;
    k2 *= k * 2 * (k * 2 + 1);
    k4 += 4;

    s += t;
    }

    std::cout << s;

    }
     
  10. Решала

    Решала New Member

    Регистрация:
    7 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    я так понял, ты упростил выражение? но оно всё равно не считает!

    Добавлено:
    я так понял, ты упростил выражение? но оно всё равно не считает!
     
  11. rrrFer

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

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    ниче я не упростил, все работает. Что значит "не считает"?
     
  12. Решала

    Решала New Member

    Регистрация:
    7 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    ну т.е. я вот значение х ввожу всё больше одного, оно опять просит ввести х, а когда 1 или -1 то просит ввести значение суммы е, оно только с отрицательными числами работает, остальные не канают и сразу мне ответ выбивает 0... просто без коментов вообще не могу зарозбраться в коде, я к преподу подходил, она сама говорит, что это твой знакомый наверно упростил условие и прорешал, а также сказала, что x4k = x * x * x, так нельзя!
    ну в общем, я уже сам запутался как можно, где правильно!
    там же должно Вычислить с точностью
    ε сумму и указать количество учтенных слагаемых.
    а оно не то пальто какое-то((( друг выручай, горю, может есть какой-то вариант другой решения поставленной задачи?

    Добавлено:
    ну т.е. я вот значение х ввожу всё больше одного, оно опять просит ввести х, а когда 1 или -1 то просит ввести значение суммы е, оно только с отрицательными числами работает, остальные не канают и сразу мне ответ выбивает 0... просто без коментов вообще не могу зарозбраться в коде, я к преподу подходил, она сама говорит, что это твой знакомый наверно упростил условие и прорешал, а также сказала, что x4k = x * x * x, так нельзя!
    ну в общем, я уже сам запутался как можно, где правильно!
    там же должно Вычислить с точностью
    ε сумму и указать количество учтенных слагаемых.
    а оно не то пальто какое-то((( друг выручай, горю, может есть какой-то вариант другой решения поставленной задачи?
     
  13. rrrFer

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

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    на выражение посмотри внимательно. При |x| > 1 ряд расходящийся, каждый последующий член ряда больше предыдущего и задача решения не имеет.
    почему?
     
Загрузка...

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