1

我的程序,今天只是学习如何编写计算器,没有给我任何回应,而是“完成”

    PROGRAM:FACTORS
    :ClrHome
    :Input "A=", A
    :Input "B=", B
    :Input "C=", C
    :For(D,1,100,1)
    :For(E,1,100,1)
    :If (D*E)=C and (D+E)=B
    :Stop
    :End:End:End
    :Disp D
    :Disp E
4

2 回答 2

1

两个问题:

1: 所有的 ":end" 都在同一行。为每个做一个不同的

2:这可能是最大的问题:“停止”命令。“停止”用于完全结束程序,并返回正常功能。我假设你想要做的是让它停止循环一次 D*E=C 和一次 D+E=B。在这种情况下,您可以做以下两件事之一:将突破代码写入重复循环;例如

:ClrHome
:Input "A=", A
:Input "B=", B
:Input "C=", C
:For(D,1,100,1)
:For(E,1,100,1)
:Repeat (D*E)=C and (D+E)=B
:End
:End
:End
:Disp D
:Disp E

或者,您可以使用 Goto 命令

:If (D*E)=C and (D+E)=B
:Goto Lbl A

在您的代码中再往下,您可以将“Lbl A”放在您希望它显示变量的位置上方

于 2014-05-16T15:57:11.593 回答
0

您遇到的问题是 stop 完全结束程序,而不仅仅是中断循环。要解决此问题,您可以使用重复循环代替或使用 For 循环:

:1→D
:Repeat (D*E=C and D+E=B) or D=100
::1→E
::Repeat (D*E=C and D+E=B) or E=100
:::E+1→E
::End
::1+D→D
:End

您可以忽略额外的冒号,它们只是为了清晰起见,但如果您离开它们,代码仍然可以工作,因为它们的功能与换行符相同。

满足条件时,重复循环将自行中断D*E=C and D+E=B,但您必须自己处理变量的初始化和E递增D

另请注意,如果A不等于 1,您的因式分解算法可能会失败。考虑将BC除以A,然后A作为常数因子输出。

你的代码的另一个错误是你有太多的End语句,但修复它不会修复程序,它仍然会在Stop. If没有 aThen不需要 a ,但如果End条件为真,则只会运行一行。例如:

:If <condition>
:<one statement>

或者

:If <condition>
:Then
:<statement 1>
:<statement 2>
:<statement ...>
:<statement n>
:End
于 2014-05-20T21:45:20.917 回答