2016-05-07 12 views
0

私は方程式を解くためのプログラムを作成しています。私の最初のステップでは、アルファベットを分離し、同じアルファベット値を追加します。 私の方程式のように: - 10x+9k-12k-3a-8a=100アルファベットはA-Zの間に存在します。私の質問はアルファベットを分ける方法です。同じアルファベットの数値を追加するには.iは方程式のような答えが必要です。 separate the x(10),k(9,-12),a(3,-8)配分法則を使って数学方程式文字列のAlike Termsの和を得る方法

`value of x=10; 
    value of k=-3; 
    value of a=-11;` 

+0

値を好きなようにあなたはそれを微調整することができ、あなたのためのパーサを書きました'a'の値は' -11'でなければなりません –

答えて

1

私を助けたり、任意の提案を与え、idea's.thanksしてください私はあなたが

var str = '10x+9k-12k-3a-8a=100'; 
 
var reg = /([\-+])?\s*(\d+)?([a-z])/g; 
 
var store = {}; 
 

 
function evaluateExp(){ 
 
    
 
    var res = reg.exec(str); 
 
    while(res){ 
 
    
 
    if(!store[res[3]]){ 
 
     store[res[3]] = []; 
 
    } 
 

 
    store[res[3]].push({ 
 
     sign: res[1] || '+', 
 
     multiplier: (typeof res[2] != 'undefined') ? parseInt(res[2], 10) : 1 
 
    }); 
 
    res = reg.exec(str); 
 
    } 
 
    
 
    
 
    Object.keys(store).forEach(function(key){ 
 
    
 
    let val = 0; 
 
    
 
    store[key].forEach(function(occ){ 
 
     if(occ.sign == '+') 
 
     val += occ.multiplier; 
 
     else 
 
     val -= occ.multiplier; 
 
    }); 
 
    
 
    $('ul#results').append('<li>value of '+ key +"="+ val + ';</li>'); 
 
    }); 
 

 
} 
 

 
$(document).ready(function(){ 
 
    evaluateExp(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="results" style="list-style-type:none;"><ul>

+0

その素晴らしい素晴らしいことです。評価が高いsoo much.AnあなたはevaluateExp()関数を説明してください – prasanth

+1

フィードバックに感謝し、それを聞いてうれしい。まず、その正規表現の助けを借りてすべての '(sign)(digits)(variable)'グループを抽出し、ストア内の 'array'内のすべてのマッチンググループに対して'(sign)(digits) 'オブジェクトを'キーは '変数'である。次に私たちの 'varibaleアルファベット 'である' store'オブジェクトのキーをループすることによって評価を始めます。すべてのアルファベットに対して、私たちが保存した複数の式が存在する可能性があるので、私が定義した 'sign 'を使って、すべての出現をループし、評価します。 –

+0

あなたの説明に非常に感謝します。より価値のあるものです。 – prasanth

関連する問題