保理计划(TI-84 plus)

时间:2014-05-13 02:13:10

标签: ti-basic

我的程序,只是学习如何编写计算器代码,并没有给我任何回应 " DONE"

    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

2 个答案:

答案 0 :(得分: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

或者,您可以使用转到命令

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

在你的代码中,你可以放置" Lbl A"在您希望它显示变量的地方

答案 1 :(得分:0)

你遇到的问题是停止完全结束程序而不是仅仅打破循环。要解决此问题,而不是使用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满足时,Repeat循环将自行中断,但您必须自己处理变量ED的初始化和递增。

另请注意,如果A不等于1,则分解算法可能会失败。请考虑将BC分开A,然后输出A作为常数。

您的代码的另一个错误是您有太多End语句,但修复此问题无法解决该程序,并且仍会在Stop处退出。没有If的{​​{1}}不需要Then,但如果条件为真,则只会运行一行。例如:

End

:If <condition>
:<one statement>