RosettaCodeData/Task/Ethiopian-multiplication/XBasic/ethiopian-multiplication.basic
2023-07-01 13:44:08 -04:00

41 lines
705 B
Text

' Ethiopian multiplication
PROGRAM "ethmult"
VERSION "0.0000"
DECLARE FUNCTION Entry()
INTERNAL FUNCTION Double(@a&&)
INTERNAL FUNCTION Halve(@a&&)
INTERNAL FUNCTION IsEven(a&&)
FUNCTION Entry()
x&& = 17
y&& = 34
tot&& = 0
DO WHILE x&& >= 1
PRINT FORMAT$("#########", x&&);
PRINT " ";
IFF IsEven(x&&) THEN
tot&& = tot&& + y&&
PRINT FORMAT$("#########", y&&);
END IF
PRINT
Halve(@x&&)
Double(@y&&)
LOOP
PRINT "= ";
PRINT FORMAT$("#########", tot&&);
PRINT
END FUNCTION
FUNCTION Double(a&&)
a&& = 2 * a&&
END FUNCTION
FUNCTION Halve(a&&)
a&& = a&& / 2
END FUNCTION
FUNCTION IsEven(a&&)
RETURN a&& MOD 2 = 0
END FUNCTION
END PROGRAM