2012-03-14 111 views
0

不完全確定它會被稱爲?輸出計算器? Xcode

但無論如何,我想知道怎麼一會正好讓計算器在用戶鍵入他的方程到一個文本框,然後當用戶點擊「=」,它計算所有用戶已鍵入英寸

恩。用戶類型: 1 + 1 *(1 + 2) 點擊進入 6(顯示)

CNC中我搞砸了我的數學:P 4(顯示)

我在互聯網上找不到任何關於這個的文章,因爲我真的不知道要搜索什麼。所以如果有人能夠幫助,或者至少讓我指向正確的方向。這將不勝感激。

謝謝, 關心。

+1

你需要問**特定**問題。你有什麼麻煩?創建一個GUI?解析用戶輸入?進行計算?等等。 – 2012-03-14 23:55:57

+4

1 + 1 *(1 + 2)= 6? – sosborn 2012-03-14 23:58:45

+0

NSExpression就我所知,從文檔中可以知道你想要什麼。這裏不需要第三方庫。 – 2012-03-15 00:05:53

回答

3

這些被稱爲數學解析器。

有兩個非常好的免費庫:DDMathParser和GCMathParser。

有關更多詳細信息,請參見this question

它們是更能勝過NSExpression。

+2

DDMathParser是我現在使用的方法。它使用起來很簡單,而且工作起來很驚人。此外它是免費的:查看維基在這裏所有關於它的問題:https://github.com/davedelong/DDMathParser/wiki/Usage – 2012-03-16 23:45:22

1

您可能會嘗試查找「infix notation」和「parse trees」作爲開始。

1
1 + 1 * (1 +2) hits enter 6 (is displayed) 

嗯,我敢肯定有很多是人類數學的樣品,但1 + 1×(1 + 2)!= 6 :)

從我的一個建議是收集所有無法識別的字符組,並將其視爲變量,然後讓用戶輸入值。像1 + y *(1 + z)一樣,輸入y = 1,z = 2,輸入result = 4。

2

你所尋找的是一些與NSExpression我想:

NSExpression *expression = [NSExpression expressionWithFormat:inputText, nil]; 
NSNumber *result = [expression expressionValueWithObject:nil context:nil]; 

我已經測試NSExpression用數學符號(0-9+-*/()),它似乎工作如預期。給它一個鏡頭,它可能只適用於你。

+0

謝謝我認爲這正是我正在尋找的,我會嘗試一下。然後讓你知道 – 2012-03-15 00:28:40

+0

這真的很棒,但'+ expressionWithFormat'沒有在NSExpression類參考中記錄。有沒有關於它如何工作的信息(或者它是私人課程)? – lnafziger 2012-03-15 16:05:58

+0

@Inafziger不,它不是私有方法,但上帝只知道爲什麼蘋果沒有在他們的文檔的最新版本中記錄它。它曾經被記錄下來,但我不確定爲什麼它不再存在。 – 2012-03-15 16:13:15