Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
66
Task/Arithmetic-Complex/Modula-2/arithmetic-complex.mod2
Normal file
66
Task/Arithmetic-Complex/Modula-2/arithmetic-complex.mod2
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
MODULE complex;
|
||||
|
||||
IMPORT InOut;
|
||||
|
||||
TYPE Complex = RECORD R, Im : REAL END;
|
||||
|
||||
VAR z : ARRAY [0..3] OF Complex;
|
||||
|
||||
PROCEDURE ShowComplex (str : ARRAY OF CHAR; p : Complex);
|
||||
|
||||
BEGIN
|
||||
InOut.WriteString (str); InOut.WriteString (" = ");
|
||||
InOut.WriteReal (p.R, 6, 2);
|
||||
IF p.Im >= 0.0 THEN InOut.WriteString (" + ") ELSE InOut.WriteString (" - ") END;
|
||||
InOut.WriteReal (ABS (p.Im), 6, 2); InOut.WriteString (" i ");
|
||||
InOut.WriteLn; InOut.WriteBf
|
||||
END ShowComplex;
|
||||
|
||||
PROCEDURE AddComplex (x1, x2 : Complex; VAR x3 : Complex);
|
||||
|
||||
BEGIN
|
||||
x3.R := x1.R + x2.R;
|
||||
x3.Im := x1.Im + x2.Im
|
||||
END AddComplex;
|
||||
|
||||
PROCEDURE SubComplex (x1, x2 : Complex; VAR x3 : Complex);
|
||||
|
||||
BEGIN
|
||||
x3.R := x1.R - x2.R;
|
||||
x3.Im := x1.Im - x2.Im
|
||||
END SubComplex;
|
||||
|
||||
PROCEDURE MulComplex (x1, x2 : Complex; VAR x3 : Complex);
|
||||
|
||||
BEGIN
|
||||
x3.R := x1.R * x2.R - x1.Im * x2.Im;
|
||||
x3.Im := x1.R * x2.Im + x1.Im * x2.R
|
||||
END MulComplex;
|
||||
|
||||
PROCEDURE InvComplex (x1 : Complex; VAR x2 : Complex);
|
||||
|
||||
BEGIN
|
||||
x2.R := x1.R / (x1.R * x1.R + x1.Im * x1.Im);
|
||||
x2.Im := -1.0 * x1.Im / (x1.R * x1.R + x1.Im * x1.Im)
|
||||
END InvComplex;
|
||||
|
||||
PROCEDURE NegComplex (x1 : Complex; VAR x2 : Complex);
|
||||
|
||||
BEGIN
|
||||
x2.R := - x1.R; x2.Im := - x1.Im
|
||||
END NegComplex;
|
||||
|
||||
BEGIN
|
||||
InOut.WriteString ("Enter two complex numbers : ");
|
||||
InOut.WriteBf;
|
||||
InOut.ReadReal (z[0].R); InOut.ReadReal (z[0].Im);
|
||||
InOut.ReadReal (z[1].R); InOut.ReadReal (z[1].Im);
|
||||
ShowComplex ("z1", z[0]); ShowComplex ("z2", z[1]);
|
||||
InOut.WriteLn;
|
||||
AddComplex (z[0], z[1], z[2]); ShowComplex ("z1 + z2", z[2]);
|
||||
SubComplex (z[0], z[1], z[2]); ShowComplex ("z1 - z2", z[2]);
|
||||
MulComplex (z[0], z[1], z[2]); ShowComplex ("z1 * z2", z[2]);
|
||||
InvComplex (z[0], z[2]); ShowComplex ("1 / z1", z[2]);
|
||||
NegComplex (z[0], z[2]); ShowComplex (" - z1", z[2]);
|
||||
InOut.WriteLn
|
||||
END complex.
|
||||
Loading…
Add table
Add a link
Reference in a new issue