2015-03-08 2 views
1

Для программы ti-84 я использовал квадратичное уравнение и сохранил корень со знаком плюс как N и корень с отрицательным знаком как R. Затем я хочу использовать только положительный корень в качестве значения для остальной части программы (если оба положительны это не имеет значения, я просто хочу, чтобы проверить один положительный), так что я следующим образом:TI-84 Установить переменную на основе логического выражения

If N>0 --> U 

ElseR-->U 

Но это не сработало , Невозможно использовать хранилище в качестве команды в инструкции if-else? Или есть другой способ выбрать только положительную переменную и сохранить это как U?

ответ

1

Это может быть довольно легко осуществлено с помощью ваших стандартных заявлений If, Else; однако, более быстрый способ сделать это через piece-wise functions. В TI-Basic каждое булево выражение оценивается либо 1, либо 0, представляя соответственно true и false. Этот факт можно использовать, чтобы сделать некоторые условные выражения намного короче.

Ваш код, используя стандартный синтаксис IfElse:

If N>0 
Then 
N→U 
Else 
R→U 
End 

Этот параметр имеет длину 18 байт.

Используя кусочную выражению, код может быть сжат до этого:

N<0:RAns+Nnot(Ans→U 

В результате в строке коды длиной всего 12 байт.

+0

изменение алгоритма 'макс (R, N-> U' может быть лучше: D, но я люблю ваше кусочное выражение. – Timtech

+0

@Timtech Я собирался прокомментировать ваш ответ об этом. Умное решение для использования 'max (' like this. Я заметил, что у него есть дополнительное преимущество - не бросать ошибку на сложные числа. –

+0

Да, после некоторой оптимизации на некоторое время я никогда не думал делиться ею с SO раньше. рад, что я сделал! – Timtech

3

Хорошо, слушайте. Ответ Блазо неверен. Каждый оператор If, имеющий Else, также нуждается в Then и End. Это правильный способ писать без кусочно выражения (кусочно-выражения, как правило, лучший способ пойти, хотя, так что я предлагаю вам проверить ответ dohaqatar как хорошо):

If N>0 
Then 
N->U 
Else 
R->U 
End 

с двумя отдельными одинокая Если, вы может уменьшить размер кода на один байт до 17 байт:

If N>0 
N->U 
If N<=0 
R->U 

Вы можете сжать его еще больше, сохраняя более 5 байт, чтобы сделать 12 байт:

R->U 
If N>0 
N->U 

Y НУ может также использовать выражение кусочна такое, как dohaqatar это ниже, а также 12 байт:

N<0:RAns+Nnot(Ans->U 

Лучшая часть есть, изменение алгоритма уменьшает размер кода до 6 байт:

max(R,N->U 
Смежные вопросы