Новичок
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 7.10.2013
Репутация: нет Всего: нет
|
Помогите с программой нужно переделать ее на C ++ builder Код | Program F_An; uses CRT; type complex = record re, im: real; end; type Opis_comp = record nam:char;a,b:integer; par: real; end; const n=2; Ninp=1; Nout=2; Nf=21; f1=0.01; f2=100; Zapis: array [1..2] of Opis_comp= ((nam: 'R'; a:1; b:2; par:1), (nam: 'C'; a:2; b:0; par:0.159)); var i,j,k, m, a, b : integer; f,df,w,Kvid,Kdb: real; Cres,t, z, y1: complex; Y:array [0..n,0..n+1] of complex;
Procedure CAdd(C1, C2: complex; var Cres:complex); begin Cres.Re:= C1.Re+C2.Re; CRes.Im :=C1.Im+C2. Im end;
Procedure CMinus(C1, C2: complex; var Cres:complex); begin Cres.Re:= C1.Re-C2.Re; CRes.Im :=C1.Im-C2. Im end;
Procedure CMult(c1, c2: complex; var Cres:complex); begin Cres.re:= c1.Re*c2.Re-c1.im*c2.im; CRes.im:= c1.re*c2.im+c2.re*c1.im end;
Procedure CDiv(c1, c2: complex; var Cres:complex); var q:real; begin q:=c2.re*c2.re+c2.im*c2.im; Cres.re:= (c1.Re*c2.Re+c1.im*c2.im)/q; Cres.im:= (c1.im*c2.re-c1.re*c2.im)/q; end;
Begin ClrScr; df:=exp((ln(f2)-ln(f1))/(Nf-1)); f:=f1; for m:=1 to Nf do begin w:=2*Pi*f; for i:=0 to n do
for j:=0 to n+1 do with Y[i,j] do begin re:=0; im:=0 end; for i:=1 to 2 do begin with Zapis[i], y1 do begin case nam of 'R': begin re:=1/Par; im:=0 end; 'C': begin re:=0; im:=w*Par end; end; {case} CAdd (Y[a,a], y1, Y[a,a]); CAdd (Y[b,b], y1, Y[b,b]); Cminus(Y[a,b], y1, Y[a,b]); Cminus(Y[b,a], y1, Y[b,a]); end; {with} end; { for i } Y[Ninp, n+1].re:=1; for k:=1 to n-1 do for i:=k+1 to n do begin CDiv(Y[i,k], Y[k,k], z); for j:=1 to n+1 do begin CMult(z, Y[k, j], t); CMinus(Y[i, j], t, Y[i, j]) end; end;{direct step} for i:=n downto 1 do {invers step} begin z:=Y[i,n+1]; for j:=i+1 to n do begin CMult(Y[i, j], Y[j, n+1], t); CAdd(z, t, z) end; {sum for j } CDiv(z, Y[i, i], Y[i, n+1]); end; { for i } Cdiv(Y[Nout, n+1], Y[Ninp, n+1], y1); Kvid:=sqrt(sqr(y1.re)+sqr(y1.im)); Kdb:=20*ln(Kvid)/ln(10); writeln('f',m:2,'=',f:7:3,' kGc K= ', Kvid:5:3,' Kdb=',Kdb:3:0,' dB'); f:=f*df end; {for m to Nf} readln end.
|
M Rrader | Модератор: Название темы должно отражать ее суть! | Это сообщение отредактировал(а) Rrader - 14.10.2013, 11:45
|