2013-04-25 76 views
-2

我需要驗證一個公式來計算學科的等級:驗證算術公式

所有標識符(A1,A2,A3,...)已根據測試,家庭作業等,由教師創建的。下面一個共同的公式的一個例子:

((A1+A2+A3)/3) * (B2+B3) 

在這種情況下,我只需要驗證公式的結構,如:

  • 非封閉括號(已完成);
  • 空括號組'()'(done);
  • 重複的操作符如'(A1 ++ A2)';
  • 重複不同的運營商,如'(A1 - * A2)';

在公式像A1,A1,等所有的標識符已經被最終用戶通知,並且不驗證。

樣品有效的公式的:

(((A1+A2+A3)/3)*2) + (((B1+B2+B3)/3)*3) 

樣品無效公式:

+ (((A1+A2+A3)/3)*2) + (((B1+B2+B3)/3)/3++) 
+8

正則表達式不是這種任務的正確工具。 – 2013-04-25 13:41:44

+1

搜索'infix notation validation'並嘗試實現它。 – SAbbasizadeh 2013-04-25 13:46:50

+0

看看@ http://irony.codeplex.com/ – 2013-04-25 14:08:37

回答

2

正則表達式是regular grammars,你需要一個上下文無關文法來分析這種東西(或驗證) 。否則,你只應用啓發式...

+0

我會嘗試實施您的提示和@SAbbasizadeh的提示。謝謝 。 – 2013-04-25 14:08:42