2009-12-31 78 views
2

下一个循环我写了一个程序(在我的TI-84计算器),以满足下面的练习:对于...在TI-BASIC

编写一个程序,将打印不平等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 

我有点理解了它一个偶然的机会;我真的不知道'如果'在'内部'如何工作。我想有它告诉我,如果没有解决,虽然如此,我想:

: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 =”为什么是这个值呢?任何人都可以帮我理解这些工作吗?

回答

2

也许尝试在程序结束时添加其他End?据我所知,你需要为每个ForIf相应End

+0

啊,是的。这将打印任何解决方案,然后“无解”以产生虚假陈述的整数。我如何做到这一点,如果至少有一个解决方案,它不显示没有解决方案,并且如果根本没有任何解决方案,它将只显示一次解决方案? – John 2009-12-31 16:58:21

+0

也许使用一个额外的变量,然后将其设置为1,如果找到解决方案,则为0,否则为0。一旦你走出循环,你可以检查它,并从那里做你的东西。我没有我的计算器,但我确定在某个列表中有一个“Break”命令。只要在'If'语句中的'Disp X'后面加上那个。 – mgbowen 2010-01-01 00:37:35

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会尽快有没有办法解决停止循环。

0

当您要求的变量与问题名称相同时,可以使用“:提示”而不是“:输入”。另外,“:提示”允许多个变量。 例如,代替

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

使用

:Prompt A,B,C 

在TI BASIC,每:如果:对于,:While和:重复需要:结束;否则,它根本无法工作。 这是如何使用:如果和:对于

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

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

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

使用方法:如果在:For中,只要确保您的End:在正确的位置。您也可以使用“:”字符将多个命令压缩到一行。对于GDund的回答,如果你想在那里结束程序,那么这样的工作,但是如果你只想离开循环,你可以做的是把计数器变量的值改为最终值,如下所示:

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

其中“ - >”是STO箭头。

如果你想程序停止在那里,你可以使用:代替停止:电子 - > X。 如果您在其他程序中使用此程序,则可以使用:改为返回

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

: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 
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设置为真(1)。如果不是,则Q保持为假(0)。