Example #1
0
        public void addNewValue(string exptession, int r, int c)
        {
            int uni1 = 64;
            int uni2 = 91;
            int uni3 = 47;
            int uni4 = 58;
            int LetRow;
            int LetCol;

            if (exptession == "" || exptession == " ")
            {
                table[r, c].value_1             = exptession;
                table[r, c].exp                 = "";
                dataGridView1.CurrentCell.Value = exptession;
                return;
            }
            table[r, c].exp = exptession;
            int h = 0;

            exptession = exptession.Replace(" ", "");
            if (exptession != null)
            {
                if (exptession[0] == '=')
                {
                    int t2;
                    int kk    = 0;
                    int k1    = 0;
                    int calc1 = 0;
                    int calc2 = 0;

                    exptession = exptession.Replace(exptession[0], ' ');
                    exptession = exptession.Replace(" ", "");
                    string test = exptession;
                    while (k1 < test.Length)
                    {
                        if (test[k1] == '(')
                        {
                            calc1++;
                        }
                        if (test[k1] == ')')
                        {
                            calc2++;
                        }
                        k1++;
                    }
                    if (calc1 != calc2)
                    {
                        dataGridView1.Rows[r].Cells[c].Value = "Error";
                        table[r, c].value_1 = "0";
                        return;
                    }
                    while (h < test.Length)
                    {
                        int t1 = (int)test[h];

                        string resultC = "";
                        string resultR = "";

                        if ((t1 > uni1) && (t1 < uni2))
                        {
                            if (kk == 0)
                            {
                                SaveTable[r, c].value_1 = exptession;
                            }

                            resultC += test[h].ToString();
                            h++;
                            t2 = (int)test[h];
                            while ((t2 > uni1 && t2 < uni2))
                            {
                                resultC += test[h];
                                h++;
                                t2 = (int)test[h];
                            }
                            while ((t2 > uni3 && t2 < uni4))
                            {
                                resultR += test[h];
                                h++;
                                if (h < test.Length)
                                {
                                    t2 = (int)test[h];
                                }
                                else
                                {
                                    t2 = 100;
                                }
                            }
                            ClassBaseSys ress = new ClassBaseSys();

                            int cc = ress.FromEx(resultC);
                            int rr = int.Parse(resultR);
                            if (cc > COLUMNS || rr > ROWS)
                            {
                                table[r, c].value_1 = "error";
                                table[r, c].exp     = "";
                                dataGridView1.Rows[r].Cells[c].Value = "error";
                                return;
                            }
                            LetCol = cc;
                            LetRow = rr;
                            string resss = dataGridView1.Rows[rr].Cells[cc].Value.ToString();
                            table[rr, cc].dependents.Add(table[r, c].getName(c, r));
                            for (int i = 0; i < table[r, c].dependents.Count; ++i)
                            {
                                table[rr, cc].dependents.Add(table[r, c].dependents[i]);
                            }
                            exptession = exptession.Replace(resultC + resultR, resss);
                            kk++;
                        }
                        h++;
                    }
                    int  hh = 0;
                    bool f  = false;
                    while (hh < exptession.Length)
                    {
                        if (!Char.IsDigit(exptession[hh]) && exptession != " ")
                        {
                            f = true;
                            break;
                        }
                        hh++;
                    }
                    if (f)
                    {
                        for (int i = 0; i < exptession.Length; ++i)
                        {
                            if (exptession[i] == '/' && exptession[i + 1] == '0')
                            {
                                table[r, c].value_1 = "0";
                                dataGridView1.Rows[r].Cells[c].Value = "divide by zero";
                                return;
                            }
                        }
                        ToPolandNotation cur = new ToPolandNotation();
                        double           res = cur.Calculate(exptession);
                        if (circle(table[r, c], r, c))
                        {
                            if (dataGridView1.Rows[r].Cells[c].Value.ToString() == "#CIRCLE")
                            {
                                dataGridView1.Rows[r].Cells[c].Value = "0";
                            }
                            table[r, c].value_1 = res.ToString();

                            dataGridView1.Rows[r].Cells[c].Value = res;
                            ColumnList.Clear();
                            ClassBaseSys test1 = new ClassBaseSys();
                            string       c1    = test1.ToEx(c);
                            ColumnList.Add(c1 + r.ToString());
                            RefreshForColumn(ColumnList);
                        }
                        else
                        {
                            MessageBox.Show("NO"); return;
                        }
                    }
                    else
                    {
                        if (exptession == " " || exptession == "")
                        {
                            table[r, c].value_1 = "0";
                            dataGridView1.Rows[r].Cells[c].Value = "0";
                            table[r, c].exp = "";
                        }
                        else
                        {
                            if (dataGridView1.Rows[r].Cells[c].Value.ToString() == "#CIRCLE")
                            {
                                table[r, c].dependents.Clear();
                                dataGridView1.Rows[r].Cells[c].Value = "0";
                            }
                            table[r, c].value_1 = exptession;

                            dataGridView1.Rows[r].Cells[c].Value = exptession;
                        }

                        if (circle(table[r, c], r, c))
                        {
                            ColumnList.Clear();
                            ClassBaseSys test1 = new ClassBaseSys();
                            string       c1    = test1.ToEx(c);
                            ColumnList.Add(c1 + r.ToString());
                            RefreshForColumn(ColumnList);
                        }
                    }
                }
                else
                {
                    table[r, c].value_1 = exptession;
                    table[r, c].exp     = exptession;
                    dataGridView1.Rows[r].Cells[c].Value = exptession;
                    ColumnList.Clear();
                    ClassBaseSys test1 = new ClassBaseSys();
                    string       c1    = test1.ToEx(c);
                    ColumnList.Add(c1 + r.ToString());
                    RefreshForColumn(ColumnList);
                }
            }
        }
Example #2
0
        public void RefreshForColumn(List <string> curList)
        {
            int uni1 = 64;
            int uni2 = 91;
            int uni3 = 47;
            int uni4 = 58;

            for (int i = 0; i < st1; ++i)
            {
                for (int j = 0; j < st1; ++j)
                {
                    if (SaveTable[i, j].value_1 != "0")
                    {
                        int    t2;
                        string exptession = SaveTable[i, j].value_1;
                        int    h          = 0;
                        while (h < exptession.Length)
                        {
                            int t1 = (int)exptession[h];

                            string resultC = "";
                            string resultR = "";

                            if ((t1 > uni1) && (t1 < uni2))
                            {
                                resultC += exptession[h].ToString();
                                h++;
                                t2 = (int)exptession[h];
                                while ((t2 > uni1 && t2 < uni2))
                                {
                                    resultC += exptession[h];
                                    h++;
                                    t2 = (int)exptession[h];
                                }
                                while ((t2 > uni3 && t2 < uni4))
                                {
                                    resultR += exptession[h];
                                    h++;
                                    if (h < exptession.Length)
                                    {
                                        t2 = (int)exptession[h];
                                    }
                                    else
                                    {
                                        t2 = 100;
                                    }
                                }
                                ClassBaseSys ress = new ClassBaseSys();
                                int          cc   = ress.FromEx(resultC);
                                int          rr   = int.Parse(resultR);
                                foreach (string str in curList)
                                {
                                    if (str == resultC + resultR)
                                    {
                                        if (curList.Count == 1)
                                        {
                                            if (circle(table[i, j], i, j))
                                            {
                                                string str1 = "";
                                                str1 = table[i, j].exp.ToString();
                                                addNewValue(str1, i, j);
                                                return;
                                            }
                                            else
                                            {
                                                return;
                                            }
                                        }
                                        else
                                        {
                                            dataGridView1.Rows[i].Cells[j].Value = 0;
                                            table[i, j].value_1 = "0";
                                            table[i, j].exp     = "0";
                                        }
                                    }
                                }
                            }
                            h++;
                        }
                    }
                }
            }
        }