GeMir

Ich finde dich | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вопрос глупейший, но, всё же, очень хотелось бы знать, является ли это программой для нахождения корней квадратного трёхчлена?: Код: Program lab_iis; const N=64; delta=N div 2; type Tcomp=record Re:real; Im:real; end; TcompAr=array [1..N] of Tcomp; var m,w1,i,p,j,k,i1:integer; W,WF:Tcomp; Reg_in,Reg_out:TcompAr; function pow(x,y:integer):integer; var i,p1:integer; begin p1:=1; for i:=1 to y do p1:=p1*x; pow:=p1; end; procedure count_w(var w1:integer); begin W.Re:=cos((2*pi*w1)/N); W.Im:=-sin((2*pi*w1)/N); end; procedure count_but(var i1:integer); var j1:integer; begin j1:=2*(i1-1)+1; WF.Re:=W.Re*Reg_in[i1+delta].Re-(W.Im*Reg_in[i1+delta].Im); WF.Im:=W.Re*Reg_in[i1+delta].Im+W.Im*Reg_in[i1+delta].Re; Reg_out[j1].Re:=Reg_in[i1].Re+WF.Re; Reg_out[j1].Im:=Reg_in[i1].Im+WF.Im; Reg_out[j1+1].Re:=Reg_in[i1].Re-WF.Re; Reg_out[j1+1].Im:=Reg_in[i1].Re-WF.Im; end; Begin for i:=1 to N do begin Reg_in[i].Re:=1; Reg_in[i].Im:=0; end; m:=N; k:=round(ln(N)/ln(2)); for i:=1 to k do begin m:=m div 2; p:=pow(2,i-1); w1:=0; for j:=1 to p do begin count_w(w1); for i1:=1 to m do count_but(i1); w1:=w1+m; end; for j:=1 to N do Reg_in[j]:=Reg_out[j]; end; writeln(Reg_in[1].Re); writeln(Reg_in[1].Im); readln; End. |
|