关于小人计算机余数(模数)的除数

时间:2014-04-02 10:05:00

标签: little-man-computer

编写一个程序,要求用户输入2个数字。程序然后向屏幕(OUT)显示将第二数字除以第一数字的余数(模数)的结果。例如,如果输入的第一个数字是14,输入的第二个数字是5,那么程序将显示4。

14 mod 5 = 14 - (2 * 5)= 14 - 10 = 4

14 mod 7 = 14 - (2 * 7)= 14 - 14 = 0

您可以假设输入的数字总是正数且大于0.

嗨,这是我不知道如何开始这个问题的问题/做到了吗?

4 个答案:

答案 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

这是解决此问题的无效方法!! 我刚刚创建了一个循环,该循环从第一个变量减去第二个变量直到其变为负数,然后向其添加第二个变量

一切都基于学校知识