【问题标题】:Program to sum input numbers is not working对输入数字求和的程序不起作用
【发布时间】:2020-10-16 09:46:41
【问题描述】:

我正在尝试制作一个程序,该程序首先从用户那里获取 n 个输入,然后计算这些数字的总和。然后我希望程序打印总和是偶数还是奇数。

例如,如果用户输入 3,他/她将必须输入 3 个数字(例如 3、2、5):然后程序将计算这些数字的总和(3 + 2 + 5)并打印答案 (10) 是奇数还是偶数。

我以为我编码正确,但它不能在 LMC 模拟器中运行,有人可以帮我找出错误吗?

我的代码:

      INP
      STA b
ab    INP
      STA a
      LDA total
      ADD a
      STA total
      STA count
      LDA b
      SUB one
      STA b
      BRZ number
      BRP loop
bc    LDA count
      SUB two
      STA count
      BRZ evennumber
      BRP number
      LDA total
      OUT
      LDA space
      OTC
      OTC
      LDA o
      OTC
      LDA d
      OTC
      OTC
      LDA e
      OTC
      HLT
cd    LDA total
      OUT
      LDA space
      OTC
      OTC
      LDA p
      OTC
      LDA A
      OTC
      LDA r
      OTC
      HLT
a     DAT 0
b     DAT 0
total DAT 0
one   DAT 1
two   DAT 2
count DAT 0
o     DAT 111
space DAT 32
d     DAT 100
e     DAT 101
p     DAT 112
A     DAT 97
r     DAT 114

【问题讨论】:

  • OTC 不是 LMC 指令。你用的是哪个模拟器?
  • 有人告诉我必须使用OTC,但我也没有听说过,我应该使用OUT代替吗?
  • 如果你被告知,那我想没关系。我想它将数据作为字符输出。
  • 是的,我猜,但即使我将其更改为 OUT,代码仍然不能像我想要的那样运行,但我似乎找不到问题..
  • 当人们花时间回答问题时,不要删除问题。现在我不愿意花时间在你的问题上,因为你可能会决定再次删除它。

标签: little-man-computer


【解决方案1】:

代码中的主要问题是标签不匹配。

一方面,您定义了以下标签:

  • ab
  • 公元前
  • 光盘

...但是您引用了以下标签:

  • 循环
  • 号码
  • 偶数

因此,您的代码无效......它不会解析。

第二组标签更有意义,而“ab”、“bc”、“cd”则毫无意义:它们无助于代码查看者理解它们的含义。因此,将您的代码与第二组对齐。

另外,没有定义 LMC 是否区分大小写,所以使用变量名a 和另一个A 不一定支持。相反,请给出有意义的名称。第一个a 实际上是您输入的数字,需要添加到总和中,因此可以将其称为summand 而不是a。另一个A 可以称为a,因为它实际上代表字母“a”。 b 也毫无意义。它表示预期的输入数量,所以可以称之为inputs

综合起来,您的代码将如下所示:

#input: 2 4 5
        INP
        STA inputs
loop    INP
        STA summand
        LDA total
        ADD summand
        STA total
        STA count
        LDA inputs
        SUB one
        STA inputs
        BRZ number
        BRP loop

number  LDA count
        SUB two
        STA count
        BRZ evennumber
        BRP number
        LDA total
        OUT
        LDA space
        OTC
        OTC
        LDA o
        OTC
        LDA d
        OTC
        OTC
        LDA e
        OTC
        HLT

evennumber LDA total
        OUT
        LDA space
        OTC
        OTC
        LDA p
        OTC
        LDA a
        OTC
        LDA r
        OTC
        HLT

summand DAT 0
inputs  DAT 0
total   DAT 0
one     DAT 1
two     DAT 2
count   DAT 0
o       DAT 111
space   DAT 32
d       DAT 100
e       DAT 101
p       DAT 112
a       DAT 97
r       DAT 114

<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.72/lmc.js"></script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-28
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    相关资源
    最近更新 更多