2016-03-12 1 views
2

Возможно ли создать программу на TI-84, которая содержит большой массив и получить данные из этого массива? У меня будет запрос программы на что-то, и я бы хотел, чтобы он увидел, может ли он найти приглашение, введенное в массив.Создание массива и захват данных на TI-84

Например, предположим, что это массив:

array("SEARCH1" => "ANSWER1", "SEARCH2" => "ANSWER2") 

Когда я вход SEARCH1 Я хотел калькулятор вернуться ANSWER1.

+0

Добро пожаловать в переполнение стека! Отправьте сообщение [MCVE] (https://stackoverflow.com/help/mcve); вы, скорее всего, получите помощь здесь, если сообщите нам подробности о том, что вы уже пробовали, и о том, что вы на самом деле пытаетесь сделать. – dho

+0

Я точно не понимаю. Вы пытаетесь реализовать структуру данных словаря, где ключи являются строками, а значения - строками? – lirtosiast

+0

@lirtosiast Да, точно. Это возможно? –

ответ

3

TI-BASIC не имеет словарей

Там нет списков/массивы строк либо. Тем не менее, можно реализовать один, используя строки. Мы будем использовать Str1 для большой строки, содержащей все ключи и значения. Используйте разделитель (скажем ?), чтобы запустить ключи, а другой (скажем !), чтобы начать вводить значения. Вы можете представить список таким образом:

//starting delimiter 
"?->Str1 

//add value "SEARCH1" => "ANSWER1" at end 
Str1+"SEARCH1!ANSWER1?→Str1 

//add second value 
Str1+"SEARCH2!ANSWER2?→Str1 

Str1 теперь ?SEARCH1!ANSWER1?SEARCH2!ANSWER2?.

Тогда для доступа к значению соответствующего ключа Str0 = SEARCH1:

"SEARCH1→Str0 
inString(Str1,"?"+Str0+"!")+length(Str0)+2 //now Ans = index of key 
sub(Str1,Ans,inString(Str1,"?",Ans)-Ans  //get the key 

Производительность этого может быть несколько улучшена с помощью уловок. Однако по мере того, как Str1 становится больше, эта процедура замедляется - для поиска ключа выполняется линейный поиск O (n) по всей строке. Если вы хотите получить доступ к O(1), реализация будет значительно сложнее, так как она требует хэширования.

+0

Код работает безупречно, но возможно ли мне набирать Str0 через подсказку? Я пробовал просто использовать «Prompt Str0», но возвращает ошибку – Matt

+2

@Matt 'Prompt Str0' хочет что-то, что оценивает строку, например. '" SEARCH1 "', поэтому вы не получите ошибку типа данных. Для ввода без кавычек используйте вместо этого 'Input Str0'. – lirtosiast

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