помогите перевести с паскаля на с++

const eps = 1e-4;

function pow(x : Real; k : Integer) : Real;
var r : Real;
begin
r := 1;
while k > 1 do
begin
Dec(k);
r := r * x;
end;
pow := r;
end;

function pRoot(x : Real; k : Integer) : Real;
var y, y0 : Real;
begin
y := 1;
repeat
y0 := y;
y := y + (x / pow(y, k-1) - y) / k;
until abs(y - y0) < eps;
pRoot := y;
end;

var a : Real;
begin
ReadLn(a);
WriteLn((pRoot(a,3) - pRoot(a*a+1,6))/(1 + pRoot(3+a,7)) :0:5);
end.

Ответы

Ответ дал: BobbyFresnel
0

#include <iostream>

#include <iomanip>

using namespace std;

double pow (double x, int k)

{

   double r = 1;

   while(k > 1)

   {

       k--;

       r *= x;

   }

   return r;

}

double pRoot (double x, int k)

{

   double const eps = 1e-4;

   double y = 1, y0;

   do

   {

       y0 = y;

       y += (x / pow(y, k - 1) - y) / k;

   }

   while(abs(y - y0) >= eps);

   return y;

}

int main()

{

   double a;

   cin >> a;

   cout << fixed << setprecision(5) << (pRoot(a, 3) - pRoot(a * a + 1, 6)) / (1 + pRoot(3 + a, 7));

   return 0;

}

Вас заинтересует