2

我编写了一个程序(在我的 TI-84 计算器上)来满足以下练习:

编写一个程序,打印不等式 ax + b < c 的所有解,其中 a、b 和 c 由用户输入。在这个程序中,x 的域将是一组连续的整数,其中最小和最大的成员也将由用户输入。(提示:使用 FOR . . . NEXT 循环从最小到最大测试每个整数。)

这是我的代码:

:Input "A=",A
:Input "B=",B
:Input "C=",C
:Disp "DOMAIN FOR X"
:Input "MIN=",D
:Input "MAX=",E
:For(X,D,E,1)
:If AX+B<C
:Disp X
:End

我是偶然发现的;我真的不知道 'If' 在 'For' 中是如何工作的。不过,我想让它告诉我是否没有解决方案,所以我尝试了:

:Input "A=",A
:Input "B=",B
:Input "C=",C
:Disp "DOMAIN FOR X"
:Input "MIN=",D
:Input "MAX=",E
:For(X,D,E,1)
:If AX+B<C
:Then
:Disp X
:Else
:Disp "NO SOLUTION"
:End

但这会返回“MIN=”的值,这是为什么呢?谁能帮我理解这些工作?

4

4 回答 4

2

End也许尝试在程序结束时添加一个附加项?据我所知,你需要有一个对应End的每个FororIf等​​。

于 2009-12-31T16:32:56.857 回答
0

当您要求的变量与问题同名时,您可以使用“:Prompt”而不是“:Input”。此外,":Prompt" 允许多个变量。例如,而不是

:Input "A=",A
:Input "B=",B
:Input "C=",C

利用

:Prompt A,B,C

在 TI BASIC 中,每个 :If、:For、:While 和 :Repeat 都需要一个 :End;否则,它根本不起作用。这是如何使用 :If 和 :For

:If condition
:Then:commands(condition=True)
[:Else:commands(condition=False)]
:End

:For(var,start,end[,interval])
:commands
:End

如果interval=1,你不需要把它放在那里。

要使用 :If 在 :For 中,只需确保您的 :End 位于正确的位置。您可能还希望使用“:”字符将多个命令压缩到一行。至于 GDund 的回答,如果你想在那里结束程序,这种方法很有效,但如果你想简单地离开循环,你可以做的就是将 counter 变量的值更改为结束值,如下所示:

:For(X,D,E)
:If AX+B<C:Then
:commands:Else
:E-->X:End
:End

其中“-->”是 STO 箭头。

如果您确实希望程序停在那里,您可以使用:Stop代替:E --> X。如果您在另一个程序中使用此程序,则可以改用:Return

所以你的代码应该是这样的:

:Prompt A,B,C  
:Disp "DOM. FOR X"
:Input "MIN=",D
:Input "MAX=",E
:For(X,D,E)
:If AX+B<C:Then:Disp X
:Else:Disp "NO SOL.":E-->X:End
:End
于 2014-11-07T02:30:29.043 回答
0

有一个变量来查看是否有解决方案。

:Input "A=",A
:Input "B=",B
:Input "C=",C
:Disp "DOMAIN FOR X"
:Input "MIN=",D
:Input "MAX=",E
:0->Q
:For(X,D,E,1)
:    If AX+B<C
:    Then
:        Disp X
:        1->Q
:    End
:End
:If Q=0
:    Disp "NO SOLUTION"

变量 Q 是一个布尔值,用于查看是否存在解决方案。如果存在,则将 Q 设置为 true(1)。如果不是,Q 保持为 false(0)。

于 2015-01-08T02:57:00.480 回答
0
:Input "A=",A
:Input "B=",B
:Input "C=",C
:Disp "DOMAIN FOR X"
:Input "MIN=",D
:Input "MAX=",E
:For(X,D,E,1)
:If AX+B<C
:Then
:Disp X
:Else
:Disp "NO SOLUTION"
:Stop
:End

Stop基本上,只要没有解决方案,只要放入它就会停止循环。

于 2012-06-21T02:21:09.087 回答