
C/C++
Решите 2 задачи на C++
Желательно не использовать сложный (заумный) синтаксис


1) Берём и вычисляем сумму, храня при этом последнюю степень тройки и счётчики. Цикл завершается, когда очередное слагаемое ряда меньше или равно заданной точности. Поскольку это знакопеременный ряд, такой критерий достаточен. Чередование знака обеспечиваем в том месте, где идёт умножение (в данном случае - в степени тройки).
Есть нюанс: если числитель и знаменатель растут быстро, то мы можем выйти за границы типа раньше, чем достигнем точности. Тогда нельзя хранить числитель и знаменатель по отдельности, а нужно хранить слагаемое целиком и с ним выполнять операции. Но в этих заданиях - не тот случай.
const double PRECISION = 0.001;
double sum = 1.0;
long numerator = 0;
double pow3 = -1.0;
double step;
do {
pow3 *= -3.0;
numerator += 2;
step = numerator / pow3 / (numerator + 1);
sum += step;
} while (step > PRECISION);
2) Полностью аналогично.Есть нюанс: если числитель и знаменатель растут быстро, то мы можем выйти за границы типа раньше, чем достигнем точности. Тогда нельзя хранить числитель и знаменатель по отдельности, а нужно хранить слагаемое целиком и с ним выполнять операции. Но в этих заданиях - не тот случай.
#include <iostream>
#include <iomanip>
using namespace std;
int sign(int value) {
return value < 0? 1 : -1;
}
int main() {
auto sm = 0.;
auto m = 1.;
auto s = 1;
for (auto n = 0; fabs(m) > 1e-5; ++n) {
s = sign(s);
auto n2 = 2. * n;
m = n ? (s * n2) / ((n2 + 1) * pow(3, n)) : 1;
sm += m;
}
cout << fixed << setprecision(3) << sm << '\n';
system("pause > nul");
}
#include <iomanip>
using namespace std;
int sign(int value) {
return value < 0? 1 : -1;
}
int main() {
auto sm = 0.;
auto m = 1.;
auto s = 1;
for (auto n = 0; fabs(m) > 1e-5; ++n) {
s = sign(s);
auto n2 = 2. * n;
m = n ? (s * n2) / ((n2 + 1) * pow(3, n)) : 1;
sm += m;
}
cout << fixed << setprecision(3) << sm << '\n';
system("pause > nul");
}
Александр Сагайдак
а можно попроще?
Включи режим "подумать самому", говорят работает.
Похожие вопросы
- СРОЧНО! Помогите решить 2 задачи C++
- Решите, пожалуйста, задачу на c++
- Задача по программированию. Решить на Python или C++
- Помогите решить задачу по C++!
- Нужно срочно решить задачу на C++
- Помогите решить задачу на C++
- Помогите решить задачу на C++.
- Задача по C++
- Задача на C++ (Остатки).
- Задача по c++ на векторы. Часть программы написана. Нужны правки.