2016-03-12 21 views
2

是否可以在TI-84上創建一個包含大型數組並從該數組獲取數據的程序?我會讓程序提示某些內容,我希望它能看到它是否能夠找到在數組中輸入的提示。在TI-84上創建一個數組並獲取數據

例如,讓我們說這是數組:

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

當我輸入SEARCH1我想計算器返回ANSWER1

+0

歡迎來到Stack Overflow!請發佈[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」',所以你不會收到數據類型錯誤。要輸入不帶引號,請改爲使用「輸入Str0」。 – lirtosiast

相關問題