Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2014, 15:50   #1
Anut
Новичок
Джуниор
 
Регистрация: 17.04.2014
Сообщений: 2
По умолчанию перевод с Паскаля в Си++

Помогите пожалуйста перевести программу с паскаля в си++!Оочень прошу...
program problem16; uses crt;
var xl,xr,tau,h,tmax,t,de, al, qq,sum,sl2 : real;
n,m,i,j,k,itask, it, itmax,IND :integer;
x,y,a,b,c,f,fi,fid, u,ua, z,q,fiy : array[1..100] of real;
Label l100,LEND; var ftaG1: TEXT;
function af(t: real;tmax: real): real;
begin af:=2.0*t/tmax; if t>0.5*tmax then af:=2.0*(tmax-t)/tmax end;

procedure prog3( itask: integer; NM: INTEGER);
var i: integer; LABEL L1,L2,L3 ;
{ ITASK=1: ФАКТОРИЗАЦИЯ И РЕШЕНИЕ
ITASK=2: ТОЛЬКО РЕШЕНИЕ }
begin if itask=1 then begin b[1]:=b[1]/c[1];
for i:=2 to n do begin
c[i]:=c[i]-b[i-1]*a[i]; b[i]:=b[i]/c[i] end; itask:=2 end;
f[1]:=f[1]/c[1]; for i:=2 to n do f[i]:=(f[i]+f[i-1]*a[i])/c[i];
IF NM<>0 THEN GOTO L1;
y[n]:=f[n]; for i:=n-1 downto 1 do y[i]:=b[i]*y[i+1]+f[i]; GOTO L3;
L1: IF NM<>1 THEN GOTO L2;
q[n]:=f[n]; for i:=n-1 downto 1 do q[i]:=b[i]*q[i+1]+f[i]; GOTO L3;
L2: z[n]:=f[n]; for i:=n-1 downto 1 do z[i]:=b[i]*z[i+1]+f[i];
L3: end;

begin xl:=0.0; xr:=1.0; tmax:=1.0; n:=51;
h:=(xr-xl)/(n-1);n:=51; m:=21;
{ сетка }
for i:=1 to n do x[i]:=xl+(i-1)*h; de:=0.01; al:=0.001;
tau:=tmax/(m-1); qq:=0.75;

for k:=1 to m do begin t:=(k-1)*tau; u[k]:=af(t,tmax) end;

t:=0.0; for i:=1 to n do y[i]:=0.0; clrscr;

for k:=2 to m do begin t:=t+tau;

for i:=2 to n-1 do begin a[i]:=1/(h*h); b[i]:=1/(h*h);
c[i]:=a[i]+b[i]+1.0/tau; f[i]:=y[i]/tau; end;

b[1]:=2.0/(h*h); c[1]:=b[1]+1.0/tau; f[1]:=y[1]/tau;
a[n]:=0.0; c[n]:=1.0; f[n]:=u[k];

itask:=1; prog3(itask,0);
fi[k]:=y[1];fid[k]:=fi[k] end;

Randomize;
for k:=2 to m do fid[k]:=fi[k]+2.0*de*(Random(2)-0.75);
for k:=1 to m do
if (k>9) and (FRAC(k/10)=0) then writeln(fid[k]:7:3) else
write(fid[k]:7:3); writeln; readln;

for i:=2 to n-1 do begin a[i]:=1/(h*h); b[i]:=1/(h*h);
c[i]:=a[i]+b[i]+1.0/tau; f[i]:=0.0 end;


b[1]:=2.0/(h*h); c[1]:=b[1]+1.0/tau; f[1]:=0.0;
a[n]:=0.0; c[n]:=1.0; f[n]:=1.0;
itask:=1; prog3(itask,1);
it:=0; itmax:=10; al:=0.001; qq:=0.75;
L100: it:=it+1;
{ НАЧАЛЬНОЕ УСЛОВИЕ }
t:=0.0; for i:=1 to n do y[i]:=0.0;
ua[1]:=y[n];
for k:=2 to m do begin t:=t+tau;

for i:=2 to n-1 do begin
a[i]:=1/(h*h); b[i]:=1/(h*h);
c[i]:=a[i]+b[i]+1.0/tau; f[i]:=y[i]/tau; end;
b[1]:=2.0/(h*h); c[1]:=b[1]+1.0/tau; f[1]:=y[1]/tau;

a[n]:=0.0; c[n]:=1.0; f[n]:=0.0;

itask:=1; prog3(itask,2);

ua[k]:=(fid[k]-z[1])/(al+q[1]);

for i:=1 to n do y[i]:=z[i]+q[i]*ua[k]; end;

t:=0.0; for i:=1 to n do y[i]:=0.0; fiy[1]:=y[1];

for k:=2 to m do begin t:=t+tau;

for i:=2 to n-1 do begin
a[i]:=1/(h*h); b[i]:=1/(h*h);
c[i]:=a[i]+b[i]+1.0/tau; f[i]:=y[i]/tau; end;

b[1]:=2.0/(h*h); c[1]:=b[1]+1.0/tau; f[1]:=y[1]/tau;
a[n]:=0.0; c[n]:=1.0; f[n]:=ua[k];

itask:=1; prog3(itask,0); fiy[k]:=y[1];end;
sum:=0.0; for k:=1 to m do sum:=sum+sqr(fiy[k]-fid[k])*tau;
sL2:=sqrt(sum);
if it>itmax then goto LEND;
IF IT=1 THEN BEGIN IND:=0;
IF SL2<DE THEN BEGIN IND:=1; QQ:=1.0/QQ END;
AL:=AL*QQ; GOTO l100 end

else begin al:=al*qq;
if (ind=0)and(sL2>de) then goto l100;
if (ind=1)and(sl2<de) then goto l100; end;
LEND:

for k:=1 to m do
if (i>9) and (FRAC(k/10)=0) then writeln(u[k]:7:3) else
write(u[k]:7:3); writeln; readln;
for k:=1 to m do
if (k>9) and (FRAC(k/10)=0) then writeln(fid[k]:7:3) else
write(fid[k]:7:3); writeln; readln;
for k:=1 to m do
if (i>8) and (FRAC(k/9)=0) then writeln(ua[k]:8:3) else
write(ua[k]:8:3); writeln; readln;
for k:=1 to m do
if (k>8) and (FRAC(k/9)=0) then writeln(fiy[k]:8:3) else
write(fiy[k]:8:3); writeln; readln;

Assign(ftaG1,'c:\tp\bin\pR2c.txt'); ReWrite(ftaG1);
for k:=1 to m do write(ftaG1, u[k]);
for k:=1 to m do write(ftaG1, fid[k]);
close(ftaG1); end.
Anut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод на C++ с паскаля dimka123 Помощь студентам 0 12.04.2014 23:16
Перевод с паскаля на си++ slasty Общие вопросы C/C++ 4 05.01.2014 15:15
Перевод из Паскаля в Си++ reyryuyu Паскаль, Turbo Pascal, PascalABC.NET 0 19.09.2012 22:19
Перевод с Паскаля на C/C++ born2k Общие вопросы C/C++ 3 24.05.2012 18:39
Перевод из паскаля на СИ Кот Шрёдингера Помощь студентам 0 02.11.2011 20:07