2014-10-15 3 views
0

Хорошо, вот моя проблема. Я написал передовую программу Pythagorean Theor, но, по-видимому, имеет исключения. Вот пример моей проблемы. Когда я ввожу A? √(3) и B? 2, я получаю . 0 назад Вот код:iPart (и int (возврат 0 для 1?

: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

Какой у вас калькулятор? Язык немного меняется на калькулятор. – PGmath

+0

@PGmath Я использую TI-83 – jaysoncopes

+1

'iPart (' и 'int (' не имеют ничего общего с этой проблемой, вместо этого проблема заключается в ошибке округления калькулятора. Во второй строке вы храните 4-√ (3) ² в B. Так как калькулятор округляет √ (3) в качестве десятичной, √ (3) ² становится настолько немного больше, чем 3, поэтому 4-√ (3) ² становится чем-то вроде 0.9999999999. Принимая 'iPart ('из этого будет тогда дать вам 0, что вызовет проблему. – user3932000

ответ

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 выровненной istead из в нижнем правом углу. Когда вы нажимаете ENTER, все будет удаляться с экрана (из-за команды Pause).

+0

Спасибо за подтверждение и предложение условного оператора Я ценю вход! – jaysoncopes

 Смежные вопросы

  • Нет связанных вопросов^_^