65 lines
947 B
Plaintext
65 lines
947 B
Plaintext
INCLUDE "D2:REAL.ACT" ;from the Action! Tool Kit
|
|
|
|
INT FUNC PowerI(INT base,exp)
|
|
INT res,i
|
|
|
|
IF exp<0 THEN Break() FI
|
|
|
|
res=1
|
|
FOR i=1 TO exp
|
|
DO
|
|
res==*base
|
|
OD
|
|
RETURN (res)
|
|
|
|
PROC PowerR(REAL POINTER base INT exp
|
|
REAL POINTER res)
|
|
INT i
|
|
REAL tmp
|
|
|
|
IF exp<0 THEN Break() FI
|
|
|
|
IntToReal(1,res)
|
|
FOR i=1 TO exp
|
|
DO
|
|
RealMult(res,base,tmp)
|
|
RealAssign(tmp,res)
|
|
OD
|
|
RETURN
|
|
|
|
PROC TestI(INT base,exp)
|
|
INT res
|
|
|
|
res=PowerI(base,exp)
|
|
PrintF("%I^%I=%I%E",base,exp,res)
|
|
RETURN
|
|
|
|
PROC TestR(REAL POINTER base INT exp)
|
|
REAL res
|
|
|
|
PowerR(base,exp,res)
|
|
PrintR(base) PrintF("^%I=",exp)
|
|
PrintRE(res)
|
|
RETURN
|
|
|
|
PROC Main()
|
|
REAL base
|
|
|
|
Put(125) PutE() ;clear screen
|
|
|
|
TestI(27,3)
|
|
TestI(2,12)
|
|
TestI(-3,9)
|
|
TestI(1,1000)
|
|
TestI(20000,0)
|
|
|
|
ValR("3.141592654",base)
|
|
TestR(base,10)
|
|
ValR("-1.11",base)
|
|
TestR(base,99)
|
|
ValR("0.123456789",base)
|
|
TestR(base,1)
|
|
ValR("987654.321",base)
|
|
TestR(base,0)
|
|
RETURN
|