编写一个程序,要求用户输入2个数字。程序然后向屏幕(OUT)显示将第二数字除以第一数字的余数(模数)的结果。例如,如果输入的第一个数字是14,输入的第二个数字是5,那么程序将显示4。
14 mod 5 = 14 - (2 * 5)= 14 - 10 = 4
14 mod 7 = 14 - (2 * 7)= 14 - 14 = 0
您可以假设输入的数字总是正数且大于0.
嗨,这是我不知道如何开始这个问题的问题/做到了吗?
答案 0 :(得分:1)
这只是简单的算术 - 获得x = m MOD n
你可以做到这一点:
x = m / n ; integer division (truncates)
x = x * n ; multiply back up to get exact multiple
x = m - x ; subtract to get remainder (modulus)
由于Little Man只有ADD和SUB算术指令,因此您需要根据第一原则实现乘法和除法运算。
答案 1 :(得分:1)
您可以通过从第一个数字中减去第二个数字直到得到负数来解决此问题。这是一个有效的版本:
INP
STA R0
INP
STA R1
LDA R0
L0 STA R0
SUB R1
BRP L0
LDA R0
OUT
HLT
R0 DAT
R1 DAT
你可以在这里看到这个:Modulo operation on LMC emulator.
答案 2 :(得分:0)
在这里,我们要使用减法方法来解决这个除法问题。这正是你的问题找到两个数字除法的余数......
// PRODUCED BY JAMES KHANAL
INP //ask the user
BRZ QUIT // halt the execution if input zero
STA DIVIDEND // store in dividend variable
INP // input dividor
BRZ QUIT // halt the execution if input zero
STA DIVIDOR // store in divider variable
LDA DIVIDEND // load into acc
LOOP STA RESULT // store the temp result
LDA RESULT // load the result
SUB DIVIDOR // subtract the dividor to acc
BRP LOOP //loop if acc is positive or zero
LDA RESULT // load the result into acc
OUT // display the result
QUIT HLT // halt if brz
HLT // hlt the execution
DIVIDEND DAT //declare variable
DIVISOR DAT //declare variable
答案 3 :(得分:0)
INP STA FIRST INP STA SECOND LOOPTOP LDA FIRST SUB SECOND STA FIRST BRP LOOPTOP ADD SECOND BRA ENDLOOP OUT ENDLOOP HLT FIRST DAT SECOND DAT
这是解决此问题的无效方法!! 我刚刚创建了一个循环,该循环从第一个变量减去第二个变量直到其变为负数,然后向其添加第二个变量
一切都基于学校知识