TI-BASIC: индексирование подсказки или команды ввода

У меня есть TI-84 Plus, и я создаю программу для вычисления величины n-мерного вектора. Я включил свой код и его вывод ниже.

Редактор программы:

PROGRAM:NTHDMAG
Disp "HOW MANY DIMENSIONS?"
Prompt N
{X,Y,Z,T,A,B,C,D,E,F,G,H,I,J,L,M,P,U,V,W}->L1
For(K,1,N,1)
L1(K)->Q
Prompt Q
End

Отображение вывода:

pgrmNTHDMAG
HOW MANY DIMENSIONS?
N=?3
Q=?1
Q=?2
Q=?3
Done

Я хочу, чтобы буквы Q были заменены каждой буквой в L1, а индексация L1 (K) в команде Prompt вызывает ошибку. Значения для букв L1 будут такими же, как и значение каждого компонента (например, здесь 1i + 2j + 3k).

Я надеюсь, что это ясно, но я более чем готов уточнить, если это не так. Спасибо за любую помощь, которую вы можете предоставить!


person ProgrammingEnthusiast    schedule 13.09.2017    source источник
comment
Input позволяет отображать пользовательские строки, но действительно ли это то, что вам нужно в первую очередь? Пользователь может сам ввести список с обычным синтаксисом {A,B,C (это также позволяет использовать Rcl с существующим списком, что может быть удобно), конечно, тогда N не предопределено   -  person harold    schedule 13.09.2017
comment
@harold Я мог бы попросить пользователя ввести строку, но это менее удобно для пользователя, и я этого не хочу. Я имею в виду, что могу, если нужно, но я бы предпочел представлять по одной переменной за раз.   -  person ProgrammingEnthusiast    schedule 13.09.2017
comment
Input позволяет пользовательской строке отображаться (а также считываться как ввод, но это не главное). Это то, что вы пытаетесь сделать, верно? Заменить Q=? по пользовательской строке?   -  person harold    schedule 13.09.2017
comment
@harold Да, это правильно, и я не знаю, как это сделать.   -  person ProgrammingEnthusiast    schedule 13.09.2017


Ответы (1)


Это может быть то, что вы пытаетесь сделать,

Prompt N
0->dim(|LT
For(I,1,N
    Input sub("XYZTABCDEFGHIJLMPUVW",I,1)+"=?",X
    X->|LT(I)
End
Disp |LT
DelVar |LT

введите здесь описание изображения

Input используется вместо Prompt, что позволяет нам выбирать строку. Строка создается путем взятия однобуквенной подстроки из "XYZTABCDEFGHIJLMPUVW" и последующего добавления к ней "=?", что делает ее похожей на Prompt, конечно, это легко изменить. Это синтаксис SourceCoder, поэтому |L означает странную маленькую ∟ для имен списков. Не работает, если список T заархивирован, его можно заставить работать, но IMO это не должно, обычно заархивированный список означает, что пользователь хочет его сохранить.

Однако гораздо проще позволить пользователю ввести список самостоятельно, например

Input "Input List:",|LT
Disp |LT
DelVar |LT

Это обеспечивает более удобный пользовательский ввод, такой как Rcl (всего списка) и операции со списками, например:

введите здесь описание изображения

Или, возможно, более типично:

введите здесь описание изображения

Но N не является явным.

Оставить результат в Ans, вероятно, полезно. Неявная печать путем оценки значения вместо правильной команды в последней строке избавляет от Done, что не так уж полезно, но это то, что вы можете сделать.

Input "Input List:",|LT
sqrt(sum(|LT^^2
DelVar |LT
Ans

введите здесь описание изображения

person harold    schedule 13.09.2017
comment
Большое спасибо! У меня только один дополнительный вопрос: поскольку список объявлен внутри цикла for, смогу ли я вызывать переменные, созданные пользователем, в другом месте моего кода? - person ProgrammingEnthusiast; 13.09.2017
comment
@ProgrammingEnthusiast да, переменные являются глобальными и даже не объявлены как таковые, именно 0->dim(|LT создал бы список, если бы его не существовало - person harold; 13.09.2017
comment
@ProgrammingEnthusiast, хотя, если вы имели в виду переменные X, Y, Z и т. Д., Это не работает так, результат находится в списке здесь. Не существует разумного способа присвоить переменной переменную (как и в большинстве языков, если на то пошло). - person harold; 13.09.2017
comment
Кроме того, как вы получаете символы sub и | на калькуляторе? - person ProgrammingEnthusiast; 13.09.2017
comment
@ProgrammingEnthusiast sub( находится в каталоге, перейдите к T и дважды нажмите вверх. |L — это маленькая буква L для имен списков, перейдите в LIST, OPS, нажмите вверх. - person harold; 13.09.2017
comment
Кроме того, просто для моего собственного любопытства, как вы включили экраны калькулятора в ответ? Это круто! - person ProgrammingEnthusiast; 13.09.2017
comment
@ProgrammingEnthusiast Я использовал SourceCoder, у него есть эмулятор, который может записывать такой экран - person harold; 13.09.2017