C/C++

Помогите написать программу на с++

Формат входных данных.
Ввод: начало и конец интервала, шаг и точность
Вывод: таблица, каждая строка которой есть комбинация из четырех чисел – значение аргумента, значение функции, количество просуммированных членов ряда и расчет функции стандартными средствами с++
Пример входных данных:
0 1 0.1 0.0001
Пример выходных данных:
0.0 0.0000 1 0.0000
0.1 0.0997 3 0.0997
0.2 0.1974 3 0.1974
0.3 0.2915 4 0.2915
0.4 0.3805 5 0.3805
0.5 0.4636 6 0.4636
0.6 0.5370 8 0.5404
0.7 0.6107 10 0.6107
0.8 0.6747 14 0.6747
0.9 0.7328 26 0.7328
1.0 0.7854 5001 0.7854
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double upow(double x, int n) {
auto m = 1.0;
while (n) {
m *= x;
--n;
}
return m;
}
pair<double, int> arctg(double x, double eps = 1e-15) {
pair<double, int> box{ 0.0, 0 };
double m;
do {
auto k = 2 * box.second + 1;
m = upow(-1, box.second) * upow(x, k) / k;
box.first += m;
++box.second;
} while (fabs(m) > eps);
return box;
}
int main() {
double a, b, step, eps, tmp;
cin >> a >> b >> step >> eps;
tmp = eps;
auto end = b + step / 10.0;
streamsize n = 0U;
while (tmp < 1) {
++n;
tmp *= 10;
}
cout.setf(ios::fixed);
for (auto x = a; x < end; x += step) {
auto [res, count] = arctg(x, eps);
cout
<< setw(4) << setprecision(1) << x << ' '
<< setw(4 + n) << setprecision(n) << res << ' '
<< setw(6) << count << ' '
<< setw(4 + n) << atan(x) << '\n';
}
system("pause > nul");
}
Спектра Фантом
Спектра Фантом
71 560
Лучший ответ
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int n;
double arctg(double x)
{
double y = -x * x, p = x, s = x, q = 1, e = 1;
while (fabs(e) > 1e-18)
{
q += 2;
p *= y;
e = p / q;
s += e;
}
n = ((int)q + 1) / 2;
return s;
}
void f(int x, string a)
{
for (int i = 0; i < x; i++)
cout << a;
}
int main()
{
double x, xbeg, xend, h, i, N;
cout << "xbeg xend N » ";
cin >> xbeg >> xend >> N;
h = (xend - xbeg) / N;
cout << endl;
f(11, " ");
cout << "ТАБЛИЦА АРКТАНГЕНСОВ:" << endl;
f(44, "—");
cout << endl;
f(10, " ");
cout << "x";
f(14, " ");
cout << "arctg(x)";
f(10, " ");
cout << "n\n"
<< endl;
for (i = 0; i <= N; i++)
{
x = xbeg + i * h;
cout << setprecision(8) << fixed << setw(11)
<< x << setprecision(16) << fixed << setw(22)
<< arctg(x) << setw(11) << n << endl;
}
system("pause > nul");
return 0;
}