好的,这是我的问题。我写了一个先进的毕达哥拉斯定理程序,但显然有例外。这是我的问题的一个实例。当我输入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
我做错了什么,如何解决?
答案 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
:...
除此之外,如果您使用Input
,ClrHome
和Output(
命令,我认为该程序看起来更清晰,更好。
: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
命令)。