RosettaCodeData/Task/Vector/Modula-2/vector.mod2

61 lines
1.0 KiB
Plaintext

MODULE Vector;
FROM FormatString IMPORT FormatString;
FROM RealStr IMPORT RealToStr;
FROM Terminal IMPORT WriteString,WriteLn,ReadChar;
TYPE Vector =
RECORD
x,y : REAL;
END;
PROCEDURE Add(a,b : Vector) : Vector;
BEGIN
RETURN Vector{a.x+b.x, a.y+b.y}
END Add;
PROCEDURE Sub(a,b : Vector) : Vector;
BEGIN
RETURN Vector{a.x-b.x, a.y-b.y}
END Sub;
PROCEDURE Mul(v : Vector; r : REAL) : Vector;
BEGIN
RETURN Vector{a.x*r, a.y*r}
END Mul;
PROCEDURE Div(v : Vector; r : REAL) : Vector;
BEGIN
RETURN Vector{a.x/r, a.y/r}
END Div;
PROCEDURE Print(v : Vector);
VAR buf : ARRAY[0..64] OF CHAR;
BEGIN
WriteString("<");
RealToStr(v.x, buf);
WriteString(buf);
WriteString(", ");
RealToStr(v.y, buf);
WriteString(buf);
WriteString(">")
END Print;
VAR a,b : Vector;
BEGIN
a := Vector{5.0, 7.0};
b := Vector{2.0, 3.0};
Print(Add(a, b));
WriteLn;
Print(Sub(a, b));
WriteLn;
Print(Mul(a, 11.0));
WriteLn;
Print(Div(a, 2.0));
WriteLn;
ReadChar
END Vector.