|
Алгоритм в подобии псевдокода:
p:=0; q:=1;
metka:
if p/q < r then p:=p+1;
if p/q = r then stop;
if p/q > r then q:=q+1;
if q > qmax then stop;
goto metka;
PROGRAM ratap;
VAR p,q,qmax:integer;
d, r, min: real;
BEGIN
write('r,qmax='); readln(r,qmax);
p:=0; q:=1; min:=r; REPEAT
IF p/q<r THEN p:=p+1 ELSE q:=q+1;
d:=abs(r-p/q);
IF d<min THEN BEGIN min:=d; writeln(p:7,'/',q) END
UNTIL (q>=qmax) OR (d=0);
readln; END.
|