Задача:
Вычислить бесконечную сумму с заданной точностью [latex]\varepsilon \left(\varepsilon > 0\right)[/latex]. Считать что требуемая точность достигнута, если несколько первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем ε, это и все последующие слагаемые можно уже не учитывать.
- [latex]\sum{\frac{1}{i^2}} [/latex]
[latex]\varepsilon[/latex] | Result | Комментарий |
0.0000000000000045 | 1.644912487 | Тест пройден |
0.45 | 1.25 | Тест пройден |
0 | Попробуйте… | Тест пройден |
>1 | 1 | Тест пройден |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> #include <iomanip> using namespace std; int main(){ double Sum =0, e=100; //Объявление переменных, которые обозначают член последовательности и сумму членов последовательности double E; //Объявление переменной, которая обозначает точность, с которой мы будем находить сумму. cin >> E; //Ввод значения точности if(E<=0){ //Проверка условия(точность не может быть равна нулю или быть отрицательным числом, иначе нас ждет бесконечный цикл) cout <<"Попробуйте ввести положительное число отличное от нуля!"<<endl; return 1; } else{ for(int i = 1;e > E;i++){ //Главный цикл. e = 1.0/(i*i); //Вычисление члена последовательности Sum += e; //Суммирование элементов } } cout << fixed <<setprecision(10) << Sum << endl; //Вывод результата. P.S. Я все-таки нашел этот способ. return 0; //Конец } |
В задаче сказано посчитать сумму членов определенной последовательности с заданной точностью.
Алгоритм:
- Объявление переменных, необходимых для обозначения члена последовательности, суммы членов последовательности и точности с которой будут проходить вычисления.
- Ввод значения точности.
- Проверка правильности ввода:
- Отрицательное или равное нулю [latex]\varepsilon[/latex] вызовет бесконечный цикл и как следствие — превышение лимита по времени.
- Создание заведомо бесконечного цикла, который прерывается, как только член последовательности станет меньше, чем заданная точность.
- Вывод результата и окончание работы.
В Вашем случае break не оправдан. В представленном варианте есть четкое условие продолжения e >= E или !(e<E), если так нравится больше.
Хотя, если присмотреться внимательнее… «это и все последующие слагаемые можно уже не учитывать» — чтоб формально это исполнить, нужно переместить if с break’ом до суммирования, чтобы не суммировать слагаемое меньше epsilon.
Удалил «break» . Вместо него вставил условие в цикл.
Засчитано.