我正在嘗試編寫一個幫助某人爲GRE數學學習的程序。正如你們許多人所知道的,分數是測試的重要組成部分,計算器是不允許的。基本上我想要做的是生成四個隨機數字(比如1-50),然後+ -/*他們然後接受一個分數格式的答案。隨機數的東西很容易。問題是,我如何1)接受一個小數答案,2)確保答案一路減少?以小數形式獲得數學答案的一種方法
我寫在ASP.NET(或jQuery,如果這就夠了)。我非常想知道是否有一些圖書館或處理這種事情的東西...
謝謝!
我正在嘗試編寫一個幫助某人爲GRE數學學習的程序。正如你們許多人所知道的,分數是測試的重要組成部分,計算器是不允許的。基本上我想要做的是生成四個隨機數字(比如1-50),然後+ -/*他們然後接受一個分數格式的答案。隨機數的東西很容易。問題是,我如何1)接受一個小數答案,2)確保答案一路減少?以小數形式獲得數學答案的一種方法
我寫在ASP.NET(或jQuery,如果這就夠了)。我非常想知道是否有一些圖書館或處理這種事情的東西...
謝謝!
由於分數基本上是分部,因此可以通過對分數條目執行除法來檢查答案是否部分正確。
[pseudocode]
if (answer.contains("/"))
int a = answer.substring(1,answer.instanceof("/"))
int b = answer.substring(answer.instanceof("/"))
if (a/b == expectedAnswer)
if (gcd(a,b) == 1)
GOOD!
else
Not sufficiently reduced
else
WRONG!
要找出它是否一路減少,創建一個GCD函數,該函數應評估爲用戶提供的答案的分母值。
學習Python和嘗試fractions
模塊。
我怎麼能寫一個(L)CD函數,而不是循環遍歷我範圍內的每一個數字,並做了一個荒謬的計算量? – Jason 2009-08-07 07:19:40
使用歐幾里德算法:http://en.wikipedia.org/wiki/Euclidean_algorithm#Implementations – Amber 2009-08-07 07:24:58
此代碼片段包含幾個錯誤: (1)如果gcd(a,b)== 1不是gcd(a) ,b)== b。 (2)與浮點比較必須允許一些鬆散的舍入錯誤:如果(a/b == expectedAnswer)可能由於浮點舍入錯誤而拒絕一些正確的(但不是減少的)答案。 – Accipitridae 2009-08-07 08:48:48