发信人: sunzx()
整理人: jeter(2000-02-24 22:02:46), 站内信件
|
使用无穷递缩等比数列的各项和公式,在QB7.1下调通。
'Begin XHXStoFS.bas
' .. . .
'Input "0.12 as 0.(12), 1.5323 as 1.5(323).
DEFDBL A-Z
INPUT num$
flxh = 0
IF INSTR(num$, "(") <> 0 THEN
flxh = -1
flag = 0
FOR i = 1 TO LEN(num$)
p$ = MID$(num$, i, 1)
IF p$ = "(" THEN
flag = 1
ELSEIF p$ = ")" THEN
flag = 0: p$ = ""
ELSEIF flag = 0 THEN
pp$ = pp$ + p$: r$ = r$ + p$
ELSEIF flag = 1 THEN
pp$ = pp$ + p$: t$ = t$ + p$
END IF
NEXT i
pp = VAL(pp$)
r = VAL(r$)
qq = 10 ^ LEN(t$)
a1 = pp - r
fz = qq * r - r + a1 * qq
fm = qq - 1
ELSE
fz = VAL(num$): fm = 1
END IF
'Get rid of the floating point problem !
fz = VAL(STR$(fz))
fm = VAL(STR$(fm))
'yue fen
DO UNTIL (fz = INT(fz)) AND (fm = INT(fm))
fz = fz * 10
fm = fm * 10
'Get rid of the floating point problem !
fz = VAL(STR$(fz))
fm = VAL(STR$(fm))
LOOP
IF fz > fm THEN maxf = fz ELSE maxf = fm
f = 2
IF flxh = -1 THEN maxf = SQR(maxf)
DO UNTIL f > maxf
IF (fz / f = INT(fz / f)) AND (fm / f = INT(fm / f)) THEN
fz = fz / f
fm = fm / f
ELSE
f = f + 1
END IF
LOOP
PRINT fz; "/"; fm
'End XHXStoFS.bas
-- Programmers of all lands,
UNITE!
--
程序设计狂人!
EMail: [email protected]
Homepahe:http://nstudio.126.com
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.102.152.199]
|
|