主题:2~10进制正整数高精度加法运算
CLS
INPUT a$, b$
DO: INPUT p: LOOP UNTIL p > 0 AND p < 11
la = LEN(a$): lb = LEN(b$)
IF la < lb THEN SWAP la, lb: SWAP a$, b$
n = la + 1
DIM a(n), b(n)
FOR i = 1 TO la
a(i) = VAL(MID$(a$, n - i, 1))
IF a(i) > p - 1 THEN PRINT "error!": END
NEXT i
FOR i = 1 TO lb
b(i) = VAL(MID$(b$, lb + 1 - i, 1))
IF b(i) > p - 1 THEN PRINT "error!": END
NEXT i
FOR i = 1 TO la
x = a(i) + b(i)
a(i) = x MOD p
a(i + 1) = a(i + 1) + x \ p
NEXT i
WHILE a(n) = 0: n = n - 1: WEND
FOR i = n TO 1 STEP -1
PRINT LTRIM$(STR$(a(i)));
NEXT i
END
变量说明:
a$:第一个加数。
b$:第二个加数。
p:进制。
输入的加数中的数字只能含有0~p-1,否则输出错误信息。比如p=2(2进制),这时只能有0和1。
INPUT a$, b$
DO: INPUT p: LOOP UNTIL p > 0 AND p < 11
la = LEN(a$): lb = LEN(b$)
IF la < lb THEN SWAP la, lb: SWAP a$, b$
n = la + 1
DIM a(n), b(n)
FOR i = 1 TO la
a(i) = VAL(MID$(a$, n - i, 1))
IF a(i) > p - 1 THEN PRINT "error!": END
NEXT i
FOR i = 1 TO lb
b(i) = VAL(MID$(b$, lb + 1 - i, 1))
IF b(i) > p - 1 THEN PRINT "error!": END
NEXT i
FOR i = 1 TO la
x = a(i) + b(i)
a(i) = x MOD p
a(i + 1) = a(i + 1) + x \ p
NEXT i
WHILE a(n) = 0: n = n - 1: WEND
FOR i = n TO 1 STEP -1
PRINT LTRIM$(STR$(a(i)));
NEXT i
END
变量说明:
a$:第一个加数。
b$:第二个加数。
p:进制。
输入的加数中的数字只能含有0~p-1,否则输出错误信息。比如p=2(2进制),这时只能有0和1。