iPart(和int(返回0表示1?

时间:2014-10-15 23:25:55

标签: ti-basic

好的,这是我的问题。我写了一个先进的毕达哥拉斯定理程序,但显然有例外。这是我的问题的一个实例。当我输入A? √(3)B? 2时,我会回复0。这是代码:

:Prompt A,C
:(C^2-A^2)->B
:If B<0
:Then
:Disp "THAT IS N
OT  A VALID TRIA
ANGLE
:Else
:If iPart(√(B))≠
√(B)
:Then
:Disp "B = √(",B
:Else
:Disp "B = ",√(B)
:End
:End

因此,如果B = 1,那么假设它应该输出B = 1,而是输出:

A=? √(3)
C=? 2
B = √(
              1
           Done

我做错了什么,如何解决?

1 个答案:

答案 0 :(得分:1)

当我快速评估您的程序时,当您获得B≠1时,它似乎正常工作。例如,如果我想计算它显示的着名的3,4,5 - 三角形:

A=?4
C=?5
B=
                  3
               Done

显然iPart(√(1)无法正常工作。您可以在If iPart( ...语句中包含一个额外的语句来排除这种情况。像这样。

:...
:If iPart(√(B))≠√(B) and B≠1
:...

除此之外,如果您使用InputClrHomeOutput(命令,我认为该程序看起来更清晰,更好。

:ClrHome
:Input "A: ",A
:Input "C: ",C
:(C^2-A^2)->B
:If B<0
:Then
:Output(4,1,"THA
T IS NOT A")
:Output(5,1,"VAL
ID TRIANGLE")
:Else
:If iPart(√(B))≠
√(B) and B≠1
:Then
:Output(3,1,"B: 
√( )")
:Output(3,5,B)
:Else
:Output(3,1,"B:")
:Output(3,5,√(B))
:End
:End
:Pause
:ClrHome

现在结果屏幕看起来像这样:

A: √(3)
C: 2
B: 1

我认为这更清洁,3在右下角对齐。当你按下ENTER时,一切都会从屏幕上移除(由于Pause命令)。