分數四則運算式(使用Java)

  • 2324
  • 0
  • 2013-11-03

分數四則運算式(使用Java)

老師出了這麼一道題目...

當輸入一串分數運算式時,計算出它的答案,並化簡為最簡分數!

例1: input: [(1/2)+(1/3)]+[(4/7)/(5/11)]        output: 439/210

例2: input: (3/5)/[(1/2)+(1/3)-[(1/5)*(1/5)]]+[(4/7)/(5/11)]*(7/13)    output:11086/7735

由輸入檔可以知道,每個小括號裡面都包著一個分數值,中括號運算的優先權最高,其次是先 * / 後加減,

有人用中序轉後序的方法能夠將運算優先順序問題處理掉,不過我個人比較喜歡用遞迴,

每個主運算式裡面也許會有很多中括號,我將中括號裡面的運算式稱為"子運算式",而"子運算式"的上一層即為它的"父運算式"。

先找出"最子運算式"算完之後將答案 retuen 回"父運算式"中,以此程序將所有子運算式處理完之後,再處理剩下的主運算式即為答案。

附上我的程式,如有錯誤或方法,敬請伺教,感激不盡。

HW3.rar