Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>This is right to left execution, so need to use proper parathesis to execute expression</p> <pre><code> // 2+(100/5)+10 = 32 //((2.5+10)/5)+2.5 = 5 // (2.5+10)/5+2.5 = 1.6666 public static double Evaluate(String expr) { Stack&lt;String&gt; stack = new Stack&lt;String&gt;(); string value = ""; for (int i = 0; i &lt; expr.Length; i++) { String s = expr.Substring(i, 1); char chr = s.ToCharArray()[0]; if (!char.IsDigit(chr) &amp;&amp; chr != '.' &amp;&amp; value != "") { stack.Push(value); value = ""; } if (s.Equals("(")) { string innerExp = ""; i++; //Fetch Next Character int bracketCount=0; for (; i &lt; expr.Length; i++) { s = expr.Substring(i, 1); if (s.Equals("(")) bracketCount++; if (s.Equals(")")) if (bracketCount == 0) break; else bracketCount--; innerExp += s; } stack.Push(Evaluate(innerExp).ToString()); } else if (s.Equals("+")) stack.Push(s); else if (s.Equals("-")) stack.Push(s); else if (s.Equals("*")) stack.Push(s); else if (s.Equals("/")) stack.Push(s); else if (s.Equals("sqrt")) stack.Push(s); else if (s.Equals(")")) { } else if (char.IsDigit(chr) || chr == '.') { value += s; if (value.Split('.').Length &gt; 2) throw new Exception("Invalid decimal."); if (i == (expr.Length - 1)) stack.Push(value); } else throw new Exception("Invalid character."); } double result = 0; while (stack.Count &gt;= 3) { double right = Convert.ToDouble(stack.Pop()); string op = stack.Pop(); double left = Convert.ToDouble(stack.Pop()); if (op == "+") result = left + right; else if (op == "+") result = left + right; else if (op == "-") result = left - right; else if (op == "*") result = left * right; else if (op == "/") result = left / right; stack.Push(result.ToString()); } return Convert.ToDouble(stack.Pop()); } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload