Почему моя программа TI-84 завершается?

Не уверен, почему, но моя программа продолжает завершаться. Я удалил все функции Stop. Вот код:

    :Lbl A
    :ClrHome
    :Prompt A
    :ClrHome
    :Prompt B
    :ClrHome
    :Prompt C
    :Disp "B^2-4AC=" (Program stops here for some reason)
    :If D<0
    :Then
    :ClrHome
    :Disp "Nonreal answer"
    :"..."
    :Pause
    :ClrHome
    :Menu("Menu", "Restart", D"
    :Lbl prgmQUADSTE3
    :Lbl A
    :...

person theK_S    schedule 24.04.2013    source источник
comment
Откуда вы знаете, что ваша программа останавливается здесь?   -  person eboix    schedule 25.04.2013
comment
Я не эксперт, но эта строка -> :Меню(Меню, Перезагрузка, D ‹- конечно выглядит синтаксически плохо   -  person Jonesopolis    schedule 25.04.2013
comment
Кроме того, у вас есть ошибка. Вы выводите B^2-4AC на экран, но никогда не сохраняете его значение в D. Кроме того, вы выполняете ClrHome перед тем, как написать, реально это или нет.   -  person eboix    schedule 25.04.2013
comment
Сразу после того, как программа отобразит B^2-4AC= и ответ, она отобразит Done и завершит работу программы. Кроме того, забыл указать значение для D в коде.   -  person theK_S    schedule 25.04.2013
comment
Кажется, что D не меньше 0   -  person dgund    schedule 18.05.2013


Ответы (1)


Я подозреваю, что ваша программа закрывается, потому что вы никогда не используете «Конец» для завершения оператора if. Если переменная D меньше нуля, программа БУДЕТ ВЫХОДИТЬ на этом операторе If, потому что каждая строка после нее считается частью оператора If и поэтому игнорируется. Используйте маркер «Конец», чтобы указать, какие строки являются частью оператора If, а какие нет. Я подозреваю, что вы хотите:

:If D<0
:Then
:ClrHome
:Disp "Nonreal answer"
:"..."
:Pause
:ClrHome
:Menu("Menu", "Restart", D"
:End
:...

Или что-то похожее на это. Я на 99% уверен, что это ваша проблема.

Следует также отметить, что вы объявляете Lbl A дважды. В TI-BASIC, когда вы используете Goto A, калькулятор начинает с начала программы и ищет первую «Lbl A», которая в данном случае является первой строкой. Во-вторых, в вашем меню, поместив этот аргумент «D» после вашего единственного варианта, как только пользователь нажмет на него, вы пометите D, которого не существует, поэтому программа завершится с ошибкой Lbl .

Эта строка: Lbl prgmQUADSTE3

Недопустимая строка. Я предполагаю, что вы хотите, чтобы программа вызывала сама себя или вызывала отдельную программу. Если программа вызывает сама себя, я предлагаю вам вместо этого использовать оператор Goto, так как ваш метод вызовет что-то похожее на переполнение стека/утечку памяти.

person Roguebantha    schedule 18.06.2013