Analisi
…
Unità
Unit Complex; {----------------------------------------------------------------} Interface {----------------------------------------------------------------} Type Comp = Record reale, immag: Real; End; Procedure InitC (Var r: Comp; reale, immag: Real); Function RealeC (Var r: Comp): Real; Function ImmagC (Var r: Comp): Real; Procedure RecC (Var r: Comp); Procedure OppC (Var r: Comp); Function ModC ( r: Comp): Real; Procedure AddC ( r, s: Comp; Var t: Comp); Procedure SubC ( r, s: Comp; Var t: Comp); Procedure MulC ( r, s: Comp; Var t: Comp); Procedure DivC ( r, s: Comp; Var t: Comp); Function UgualiC( r, s: Comp): Boolean; {----------------------------------------------------------------} Implementation {----------------------------------------------------------------} Procedure InitC(Var r: Comp; reale, immag: Real); Begin r.reale:=reale; r.immag:=immag; End; Function RealeC(Var r: Comp):Real; Begin RealeC:=r.reale; End; Function ImmagC(Var r: Comp):Real; Begin ImmagC:=r.immag; End; Procedure OppC(Var r: Comp); Begin InitC(r, -RealeC(r), -ImmagC(r)); End; Function ModC(r: Comp): Real; Begin ModC:=Sqrt(Sqr(RealeC(r))+Sqr(ImmagC(r))); End; Procedure RecC(Var r: Comp); Var M: Real; Begin M:=ModC(r); If(M = 0) Then Halt(1); M:=Sqr(M); InitC(r, RealeC(r)/M, -ImmagC(r)/M); End; Procedure AddC(r, s: Comp; Var t: Comp); Begin InitC(t, RealeC(r)+RealeC(s), ImmagC(r)+ImmagC(s)); End; Procedure SubC(r, s: Comp; Var t: Comp); Begin OppC(s); AddC(r, s, t); End; Procedure MulC(r, s: Comp; Var t: Comp); Begin InitC(t, RealeC(r)*RealeC(s)-ImmagC(r)*ImmagC(s), RealeC(r)*ImmagC(s)+RealeC(s)*ImmagC(r)); End; Procedure DivC(r, s: Comp; Var t: Comp); Begin RecC(s); MulC(r, s, t); End; Function UgualiC(r, s: Comp): Boolean; Begin UgualiC:=(RealeC(r) = RealeC(s)) And (ImmagC(r) = ImmagC(s)); End; {----------------------------------------------------------------} Begin Writeln(‘Unit Complex, ver. 1.0 ...’); End.
Test
…