Войти

Показать полную графическую версию : [решено] Перевод кода с Pascal в C++


VisualZombi
25-11-2013, 13:18
Program rgr_maximus;
Uses crt;
type massive=array[1..10] of real;
var b,x,y,a,da,underln : real;
i,N,aN:integer;
ms:massive;

procedure func(b: real; { Функция для вычисления методом Ньютона }
var fb,dfb: real);
begin
fb:=exp(-b)+b*b-2; { Сама функция }
dfb:=-1*exp(-b)+2*b { Ее производная }
end;
procedure newton(var b: real); { Метод Ньютона }
const tol = 1.0E-6;
var fb,dfb,db,b1: real;
begin
repeat
b1:=b;
func(b,fb,dfb);
db:=fb/dfb;
b:=b1-db;
until abs(db)<=abs(tol*b)
end; { конец по Ньютону }
{ Главная программа }
BEGIN

clrscr;
writeln('Введите следующие значения:');
write(' x = '); readln(x);
write(' aNach = '); readln(aN); { a начальноe}
write(' da_shag= '); readln(da); {шаг}
write(' аN= '); readln(N); {количество а }
b:=x;
newton(b);
writeln('Результат вычисления по Ньютону: b=',b);
a:=aN;
for i:=1 to N do
begin
underln:=x*x+b*b;
if underln=0 then writeln('Ошибка: ln(0)') else
y:=a*x*x*x*x+b*ln(underln);
ms[i]:=y;
writeln('a=',a,' y=',ms[i]);
a:=a+da
end;
write(' Для выхода из программы нажмите клавишу Enter');
readln;
END.

Drongo
25-11-2013, 15:59
VisualZombi, Предупреждение, если раз кинете код без оформление его тегами кода, тему перенесу в тест-зону.

mrcnn
26-11-2013, 02:33
#include <stdio.h>
#include <math.h>
#include <conio.h>

double fb, dfb;

void func(double b)
{
fb = exp(-b)+b*b-2;
dfb = 1*exp(-b) +2*b;
}

double newton(double b)
{
const double tol = 1.0E-6;
double db, b1;

b1 = b;
func(b);
db = fb *dfb;
b = b1-db;

while (abs(db) <=abs(tol*b))
{
b1 = b;
func(b);
db = fb *dfb;
b = b1-db;
}


return b;
}

int main()
{
double ms[10];
double b,x,y,a,da,underln;
int i, N, aN;

printf("Введите следующие значения:\n");
scanf("x=%lf\n", &x);
scanf("aNach=%d\n", &aN);
scanf("da_shag=%lf\n", &da);
scanf("aN=%d\n", &N);

b = x;
b = newton(b);
printf("Результат вычисления по Ньютону: b=%lf\n", b);

a=aN;
for (i=0; i<N; i++)
{
underln =x*x+b*b;
if (underln==0)
printf("Ошибка: ln(0)");
else
y=a*x*x*x*x+b*log(underln);

ms[i]=y;
printf("a=%lf y=%lf\n",a,ms[i]);
a=a+da;
}

printf("Для выхода из программы нажмите клавишу Enter");
getch();

return 0;
}




© OSzone.net 2001-2012