2009-08-07 69 views
0

我正在嘗試編寫一個幫助某人爲GRE數學學習的程序。正如你們許多人所知道的,分數是測試的重要組成部分,計算器是不允許的。基本上我想要做的是生成四個隨機數字(比如1-50),然後+ -/*他們然後接受一個分數格式的答案。隨機數的東西很容易。問題是,我如何1)接受一個小數答案,2)確保答案一路減少?以小數形式獲得數學答案的一種方法

我寫在ASP.NET(或jQuery,如果這就夠了)。我非常想知道是否有一些圖書館或處理這種事情的東西...

謝謝!

回答

0

由於分數基本上是分部,因此可以通過對分數條目執行除法來檢查答案是否部分正確。

[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函數,該函數應評估爲用戶提供的答案的分母值。

+0

我怎麼能寫一個(L)CD函數,而不是循環遍歷我範圍內的每一個數字,並做了一個荒謬的計算量? – Jason 2009-08-07 07:19:40

+2

使用歐幾里德算法:http://en.wikipedia.org/wiki/Euclidean_algorithm#Implementations – Amber 2009-08-07 07:24:58

+2

此代碼片段包含幾個錯誤: (1)如果gcd(a,b)== 1不是gcd(a) ,b)== b。 (2)與浮點比較必須允許一些鬆散的舍入錯誤:如果(a/b == expectedAnswer)可能由於浮點舍入錯誤而拒絕一些正確的(但不是減少的)答案。 – Accipitridae 2009-08-07 08:48:48

0

學習Python和嘗試fractions模塊。

相關問題