private void SubMOP(token t, int ind) { int a = ind; int find = ind + 1; while (tokens[find].val != "|") { find++; } TokenList t1 = SubList(ind + 2, find - 1); double r1 = t1.GetResult(); int ffind = find; while (tokens[ffind].type != Types.CBRACKET) { ffind++; } TokenList t2 = SubList(find + 1, ffind - 1); double r2 = t2.GetResult(); double r = 0; switch (t.val) { case "min": if (r1 > r2) { r = r2; } else { r = r1; } break; case "max": if (r1 > r2) { r = r1; } else { r = r2; } break; case "mod": r = r1 % r2; break; case "div": r = (int)(r1 / r2); break; } token q = new token(); q.type = Types.NUM; q.val = r.ToString(); Replace(a, ffind, q); }
public void Renew() { Parser parser = new Parser(); TokenList t = parser.Parse(formula); val = t.GetResult(); foreach (Cell h in hrefs) { h.Renew(); } }
public double Change(int h, int w, string formula) { Parser parser = new Parser(); TokenList a = parser.Parse(formula); List <string> vars = a.GetVars(); T[h, w].formula = formula; foreach (string q in vars) { int w1 = q[0] - 'A'; int w2 = Int32.Parse(q.Substring(1)) - 1; T[w2, w1].AddHref(T[h, w]); } Show(); return(a.GetResult()); }
private void Brackets() { int a = 0; while (a != tokens.Count && tokens[a].type != Types.OBRACKET) { a++; } if (a != tokens.Count) { //token t = new token(); //t.type = Types.CBRACKET; //t.val = ")"; int b = a; while (b != tokens.Count && tokens[b].type != Types.CBRACKET) { if (tokens[b].val != "(") { b++; } else { a = b; b++; } } if (b != 0) { TokenList tok = SubList(a + 1, b - 1); double res = tok.GetResult(); token w = new token(); w.type = Types.NUM; w.val = res.ToString(); Replace(a, b, w); } } }