Example #1
0
        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);
        }
Example #2
0
        public void Renew()
        {
            Parser    parser = new Parser();
            TokenList t      = parser.Parse(formula);

            val = t.GetResult();
            foreach (Cell h in hrefs)
            {
                h.Renew();
            }
        }
Example #3
0
        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());
        }
Example #4
0
        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);
                }
            }
        }