38 lines
935 B
Text
38 lines
935 B
Text
vc = proc (n, base: int) returns (int, int)
|
|
p: int := 0
|
|
q: int := 1
|
|
while n ~= 0 do
|
|
p := p * base + n // base
|
|
q := q * base
|
|
n := n / base
|
|
end
|
|
num: int := p
|
|
denom: int := q
|
|
while p ~= 0 do
|
|
p, q := q // p, p
|
|
end
|
|
return(num/q, denom/q)
|
|
end vc
|
|
|
|
print_frac = proc (po: stream, num, denom: int)
|
|
if num=0 then
|
|
stream$puts(po, " 0")
|
|
else
|
|
stream$puts(po, " ")
|
|
stream$putright(po, int$unparse(num), 2)
|
|
stream$puts(po, "/")
|
|
stream$putright(po, int$unparse(denom), 2)
|
|
end
|
|
end print_frac
|
|
|
|
start_up = proc ()
|
|
po: stream := stream$primary_output()
|
|
for base: int in int$from_to(2,5) do
|
|
stream$puts(po, "base " || int$unparse(base) || ":")
|
|
for i: int in int$from_to(0, 9) do
|
|
n, d: int := vc(i, base)
|
|
print_frac(po, n, d)
|
|
end
|
|
stream$putl(po, "")
|
|
end
|
|
end start_up
|