RosettaCodeData/Task/Sum-digits-of-an-integer/QuickBASIC/sum-digits-of-an-integer.basic
2023-07-01 13:44:08 -04:00

20 lines
637 B
Text

DECLARE FUNCTION SumDigits% (Num AS INTEGER, NBase AS INTEGER)
CLS
PRINT "1 base 10 ->"; SumDigits%(1, 10)
PRINT "1234 base 10 ->"; SumDigits%(1234, 10)
PRINT "FE base 16 ->"; SumDigits%(&HFE, 16); " (Hex -> "; HEX$(SumDigits%(&HFE, 16)); ")"
PRINT "F0E base 16 ->"; SumDigits%(&HF0E, 16); " (Hex -> "; HEX$(SumDigits%(&HF0E, 16)); ")"
FUNCTION SumDigits% (Num AS INTEGER, NBase AS INTEGER)
' Var
DIM iSum AS INTEGER
Num = ABS(Num) ' Should be a positive number
IF NBase < 2 THEN NBase = 10 ' Default decimal
DO WHILE Num > 0
iSum = iSum + (Num MOD NBase)
Num = Num \ NBase
LOOP
SumDigits% = iSum
END FUNCTION