51 lines
941 B
Plaintext
51 lines
941 B
Plaintext
MODULE Sequence;
|
|
FROM FormatString IMPORT FormatString;
|
|
FROM Terminal IMPORT WriteString,WriteLn,ReadChar;
|
|
|
|
PROCEDURE vc(n,base : INTEGER; VAR num,denom : INTEGER);
|
|
VAR p,q : INTEGER;
|
|
BEGIN
|
|
p := 0;
|
|
q := 1;
|
|
|
|
WHILE n#0 DO
|
|
p := p * base + (n MOD base);
|
|
q := q * base;
|
|
n := n DIV base
|
|
END;
|
|
|
|
num := p;
|
|
denom := q;
|
|
|
|
WHILE p#0 DO
|
|
n := p;
|
|
p := q MOD p;
|
|
q := n
|
|
END;
|
|
|
|
num := num DIV q;
|
|
denom := denom DIV q
|
|
END vc;
|
|
|
|
VAR
|
|
buf : ARRAY[0..31] OF CHAR;
|
|
d,n,i,b : INTEGER;
|
|
BEGIN
|
|
FOR b:=2 TO 5 DO
|
|
FormatString("base %i:", buf, b);
|
|
WriteString(buf);
|
|
FOR i:=0 TO 9 DO
|
|
vc(i,b,n,d);
|
|
IF n#0 THEN
|
|
FormatString(" %i/%i", buf, n, d);
|
|
WriteString(buf)
|
|
ELSE
|
|
WriteString(" 0")
|
|
END
|
|
END;
|
|
WriteLn
|
|
END;
|
|
|
|
ReadChar
|
|
END Sequence.
|