Всё сказано чётко и ясно: использовать прототипы, точность вычисления суммы ряда равна 1e-4, а "по ссылке" можно понимать ссылку на функцию. Тогда будет как-нибудь так:
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
double y(double x);
double s(double x);
void print(double x, double (*f)(double),
double (*g)(double))
{
double fx = f(x), gx = g(x);
printf("%4.1f%20.15f%20.15f%11.2e\n",
x, fx, gx, gx - fx);
}
int main()
{
double i, x;
for (i = 0; i <= 30; i++)
{
x = -1.5 + i * 0.1;
print(x, y, s);
}
}
double y(double x)
{
return pow(cos(x), 3);
}
double s(double x)
{
double a, u = 3., v = 1., xx = - x * x,
w = 9. * xx, s = 4., n = 0, q;
while (fabs(a) > 4e-4)
{
n += 2.;
q = 1. / (n * (n - 1.));
u *= xx * q;
v *= w * q;
a = u + v;
s += a;
}
return s / 4.;
}
Заказываемая точность вычисления суммы ряда может отличаться от абсолютной точности вычисленной суммы в сравнении со значением функции, полученной при помощи модуля cmath. Её тоже лучше напечатать отдельным столбцом. В итоге вот что получается:
