68 lines
1.5 KiB
Plaintext
68 lines
1.5 KiB
Plaintext
MODULE Linear;
|
|
FROM FormatString IMPORT FormatString;
|
|
FROM Terminal IMPORT WriteString,WriteLn,ReadChar;
|
|
|
|
PROCEDURE WriteInt(n : INTEGER);
|
|
VAR buf : ARRAY[0..15] OF CHAR;
|
|
BEGIN
|
|
FormatString("%i", buf, n);
|
|
WriteString(buf)
|
|
END WriteInt;
|
|
|
|
PROCEDURE WriteLinear(c : ARRAY OF INTEGER);
|
|
VAR
|
|
buf : ARRAY[0..15] OF CHAR;
|
|
i,j : CARDINAL;
|
|
b : BOOLEAN;
|
|
BEGIN
|
|
b := TRUE;
|
|
j := 0;
|
|
|
|
FOR i:=0 TO HIGH(c) DO
|
|
IF c[i]=0 THEN CONTINUE END;
|
|
|
|
IF c[i]<0 THEN
|
|
IF b THEN WriteString("-")
|
|
ELSE WriteString(" - ") END;
|
|
ELSIF c[i]>0 THEN
|
|
IF NOT b THEN WriteString(" + ") END;
|
|
END;
|
|
|
|
IF c[i] > 1 THEN
|
|
WriteInt(c[i]);
|
|
WriteString("*")
|
|
ELSIF c[i] < -1 THEN
|
|
WriteInt(-c[i]);
|
|
WriteString("*")
|
|
END;
|
|
|
|
FormatString("e(%i)", buf, i+1);
|
|
WriteString(buf);
|
|
|
|
b := FALSE;
|
|
INC(j)
|
|
END;
|
|
|
|
IF j=0 THEN WriteString("0") END;
|
|
WriteLn
|
|
END WriteLinear;
|
|
|
|
TYPE
|
|
Array1 = ARRAY[0..0] OF INTEGER;
|
|
Array3 = ARRAY[0..2] OF INTEGER;
|
|
Array4 = ARRAY[0..3] OF INTEGER;
|
|
BEGIN
|
|
WriteLinear(Array3{1,2,3});
|
|
WriteLinear(Array4{0,1,2,3});
|
|
WriteLinear(Array4{1,0,3,4});
|
|
WriteLinear(Array3{1,2,0});
|
|
WriteLinear(Array3{0,0,0});
|
|
WriteLinear(Array1{0});
|
|
WriteLinear(Array3{1,1,1});
|
|
WriteLinear(Array3{-1,-1,-1});
|
|
WriteLinear(Array4{-1,-2,0,-3});
|
|
WriteLinear(Array1{-1});
|
|
|
|
ReadChar
|
|
END Linear.
|