主题:[原创]竖式乘法-求哪位有更好的办法?
'类似以下的计算过程
12
* 14
_____
48
+12
_____
=168
'本人编了一个处理以上竖式乘法的程序如下。但个人觉得“很土,很麻烦”,是硬凑出来的结果。不知哪位大侠有更好的办法?多谢赐教。
'注意:希望大侠有一般文字说明,解释一下思路,而不要大段的程序。
CLS : INPUT a$, b$: la = LEN(a$): lb = LEN(b$)
a = VAL(a$): b = VAL(b$): btemp = b
PRINT TAB(10); a
PRINT TAB(10 + la - lb - 1); "*"; b
PRINT "___________________"
'以上乘数列表
ld = 0
FOR i = 1 TO lb
btemp1 = btemp MOD 10: btemp = btemp \ 10
c = a * btemp1: ctemp = c: lc = 0
DO
lc = lc + 1: ctemp = ctemp \ 10
LOOP UNTIL ctemp = 0
IF i = lb THEN
PRINT TAB(10 + LEN(a$) - lc - ld - 1); "+"; c
ELSE
PRINT TAB(10 + LEN(a$) - lc - ld); c
END IF
ld = ld + 1
NEXT i
'以上分别写出乘的过程
PRINT "___________________"
c = a * b: ctemp = c: lc = 0
DO
lc = lc + 1: ctemp = ctemp \ 10
LOOP UNTIL ctemp = 0
PRINT TAB(10 + LEN(a$) - lc - 1); "="; c
'以上显示乘法的结果
END
12
* 14
_____
48
+12
_____
=168
'本人编了一个处理以上竖式乘法的程序如下。但个人觉得“很土,很麻烦”,是硬凑出来的结果。不知哪位大侠有更好的办法?多谢赐教。
'注意:希望大侠有一般文字说明,解释一下思路,而不要大段的程序。
CLS : INPUT a$, b$: la = LEN(a$): lb = LEN(b$)
a = VAL(a$): b = VAL(b$): btemp = b
PRINT TAB(10); a
PRINT TAB(10 + la - lb - 1); "*"; b
PRINT "___________________"
'以上乘数列表
ld = 0
FOR i = 1 TO lb
btemp1 = btemp MOD 10: btemp = btemp \ 10
c = a * btemp1: ctemp = c: lc = 0
DO
lc = lc + 1: ctemp = ctemp \ 10
LOOP UNTIL ctemp = 0
IF i = lb THEN
PRINT TAB(10 + LEN(a$) - lc - ld - 1); "+"; c
ELSE
PRINT TAB(10 + LEN(a$) - lc - ld); c
END IF
ld = ld + 1
NEXT i
'以上分别写出乘的过程
PRINT "___________________"
c = a * b: ctemp = c: lc = 0
DO
lc = lc + 1: ctemp = ctemp \ 10
LOOP UNTIL ctemp = 0
PRINT TAB(10 + LEN(a$) - lc - 1); "="; c
'以上显示乘法的结果
END