C/C++

Объясните в кратце как выполнять код C++

)) )))
)) )))
33
(•‿•) Правильный вариант, без ненужных static, auto и прочих дурацких факториалов и степеней, которые тут могут понадобиться только для того, чтоб на таким незадачливым горе-программистом, который позволит себе всё это непотребство, гомерически хохотала вся честная публика, показывали на него указательными перстами, да крутили пальцем у виска! ʘ‿ʘ
#include <iostream>
#include <iomanip>
using namespace std;
double y(double&);
double s(double&);
int main()
{
double a = -1.5, b = -a, h = (b - a) / 10, i, x;
for (i = 0; i <= 10; i++)
{
x = a + i * h;
cout << fixed << setprecision(1) << setw(7) <<
x << " » " << setprecision(15) << setw(20) << y(x)
<< setprecision(15) << setw(20) << s(x) << endl;
}
getchar();
return 0;
}
double y(double &x)
{
double u = cos(x);
return u * u * u;
}
double s(double &x)
{
double q = - x * x, p = 1.0, P = 1.0,
sum = 1.0, k = 0.0, e = 1.0;
while (abs(e) > 1e-4)
{
k += 2.0;
P *= 9.0;
p *= q / (k * (k - 1.0));
e = (3.0 + P) * p / 4.0;
sum += e;
}
return sum;
}
Ну и где здесь весь этот идиотский антураж из ненужных конструкций и неэффективных решений? Его здесь нет. Автор вопроса должен был ужè запомнить, что всё должно быть максимально просто и эффективно и ни в коем случае не должно быть ничего лишнего! Ему это объясняли, а двадцать раз повторять одно и то же тут никто не будет..
А насчёт результатов, так они в обоих вариантах одинаковы, а поэтому весь предыдущий разговор как бы ни о чём.
(✿^‿^) Супер-эффективность моего варианта как-то не очень ощущается и даёт о себе знать, поскольку расчёты тут очень быстро заканчиваются и вся программа просчитывается мгновенно. Да и не проще ли вычислить один раз косинус для х да возвести его в куб, а не городить огород из каких-то странных сумм а-ля ¼·(3cosX+cos3X), как это прописано в задании? (◔‿◔)
А вот прототипы, которые требуются в задании, я, естественно, сделала - раз требуются прототипы для функций у (х) и s(x), то и надо сделать, тут даже и говорить не о чем!.
На сине-белом скрине - вывод результатов колиной программы, на магента-золотистом - моей:
Алексей Бехилев
Алексей Бехилев
29 440
Лучший ответ
>Объясните в кратце как выполнять код C++
Кратц - это фамилия такая, пишется с заглавной буквы.

А если вкратце, то:
1. Пишешь код.
2. Нажимаешь F5 - он выполняется.
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double fact(int n) {
return n == 0? 1. : double(n) * fact(n - 1);
}
double fn(double& x, double& eps) {
static auto acc = 0.0;
static auto n = 0;
static auto prev = 0.0;
auto m = n * 2;
auto next = pow(-1, n) * ((3.0 + pow(9.0, n)) * pow(x, m) / fact(m));
if (fabs(next - prev) < eps) {
auto sum = acc;
acc = prev = 0.0;
n = 0;
return sum / 4.0;
}
acc += next;
++n;
prev = next;
return fn(x, eps);
}
int main() {
auto eps = 1e-4;
auto a = -1.5;
auto b = 1.5;
auto h = (b - a) / 10.0;
auto end = b + h / 10.0;
cout << fixed;
for (auto x = a; x <= end; x += h) {
cout << setprecision(2) << setw(7) << x;
auto test = pow(cos(x), 3);
cout << setprecision(6) << setw(10) << test;
auto result = fn(x, eps);
cout << setprecision(6) << setw(10) << result;
puts("");
}
system("pause > nul");
}
Вася Григорьев
Вася Григорьев
99 437
)) ))) спасибо, как всегда выручаете)