0

好的,这是我的问题。我写了一个高级勾股定理程序,但它显然有例外。这是我的问题的一个例子。当我输入A? √(3)andB? 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

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

4

1 回答 1

1

当我快速评估您的程序时,当您获得B≠1. 例如,如果我想计算著名的 3,4,5 - 它显示的三角形:

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

显然iPart(不能与√(1). 您可以在声明中包含一个额外的If iPart( ...声明来排除这种情况。像这样。

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

Input除此之外,如果您使用,ClrHomeOutput(命令,我认为程序看起来更干净更好。

: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命令)。

于 2014-10-23T07:49:41.517 回答