我的程序,只是学习如何编写计算器代码,并没有给我任何回应 " 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
答案 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循环将自行中断,但您必须自己处理变量E
和D
的初始化和递增。
另请注意,如果A
不等于1,则分解算法可能会失败。请考虑将B
和C
分开A
,然后输出A
作为常数。
您的代码的另一个错误是您有太多End
语句,但修复此问题无法解决该程序,并且仍会在Stop
处退出。没有If
的{{1}}不需要Then
,但如果条件为真,则只会运行一行。例如:
End
或
:If <condition>
:<one statement>