|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.05.2014, 15:50 | #1 |
Новичок
Джуниор
Регистрация: 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. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод на 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 |