private void btnresult_Click(object sender, EventArgs e)
        {
            if (bans == true)
            {
                phansos[n - 1]         = new Phanso(Convert.ToDouble(Tuso[n - 1].Text.Trim()), Convert.ToDouble(mauso[n - 1].Text.Trim()));
                phansoNguyengoc[n - 1] = new Phanso(Convert.ToDouble(Tuso[n - 1].Text.Trim()), Convert.ToDouble(mauso[n - 1].Text.Trim()));
            }
            else
            {
                phansos[n - 1]         = new Phanso(Convert.ToDouble(Tuso[n - 1].Text.Trim()), Convert.ToDouble(mauso[n - 1].Text.Trim()));
                phansoNguyengoc[n - 1] = new Phanso(Convert.ToDouble(Tuso[n - 1].Text.Trim()), Convert.ToDouble(mauso[n - 1].Text.Trim()));
            }
            int    l  = KtraMausoBangKhong(phansos, n);
            Phanso kq = KquaCongTru(phansos, a, n);

            if (kq.Mauso != 0)
            {
                if (kq.Tuso * kq.Mauso > 0)//neu ca 2 cung la so am hoac duong
                {
                    Math.Abs(kq.Tuso);
                    Math.Abs(kq.Mauso);
                }
                else if (kq.Mauso < 0 && kq.Tuso > 0)//neu 1 trong 2 la so am
                {
                    kq.Mauso = kq.Mauso * (-1);
                    kq.Tuso  = kq.Tuso * (-1);
                }
                kq = Doi(kq.Tuso) / Doi(kq.Mauso);//vi ham doi se tao ra 1 phan so moi, nen phai chia lai thi moi ra

                ans = new Phanso(kq.Tuso, kq.Mauso);
                if (kq.Tuso - (int)kq.Tuso == 0 && kq.Mauso - (int)kq.Mauso == 0)
                {
                    double a = kq.UCLN(Math.Abs(kq.Tuso), Math.Abs(kq.Mauso));
                    ans = new Phanso(kq.Tuso / a, kq.Mauso / a);
                }
                textBox1.Text    = ans.Tuso.ToString();
                textBox2.Text    = ans.Mauso.ToString();
                btnClear.Enabled = true; bans = true;
            }
            else //mau so bang 0
            {
                MessageBox.Show("Có một hoặc nhiều phân số bằng không.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //int l = KtraMausoBangKhong(phansos, n);
                if (l >= 0)
                {
                    mauso[l].Focus();
                }
            }
        }
        Phanso KquaCongTru(Phanso[] phanso, string[] ToanTu, int k)
        {
            Phanso kq = new Phanso();

            KquaNhanChia(phanso, ToanTu, k);
            kq = phanso[0];

            int n = k;

            for (int i = 0; i <= n; i++)
            {
                if (ToanTu[i] == "+")
                {
                    phanso[i] = phanso[i + 1] + phanso[i];
                    kq        = phanso[i];
                    // xoa vi tri so[i+1]
                    for (int j = i + 1; j < n; j++)
                    {
                        phanso[j] = phanso[j + 1];
                    }
                    //xoa dau i
                    for (int j = i; j < n; j++)
                    {
                        ToanTu[j] = ToanTu[j + 1];
                    }
                    i--;
                    n--;
                }
                else if (ToanTu[i] == "-")
                {
                    phanso[i] = phanso[i] - phanso[i + 1];
                    kq        = phanso[i];
                    // xoa vi tri so[i+1]
                    for (int j = i + 1; j < n; j++)
                    {
                        phanso[j] = phanso[j + 1];
                    }
                    //xoa dau i
                    for (int j = i; j < n; j++)
                    {
                        ToanTu[j] = ToanTu[j + 1];
                    }
                    i--;
                    n--;
                }
            }
            return(kq);
        }
Beispiel #3
0
 public Phanso(Phanso ob)
 {
     tu  = ob.tu;
     mau = ob.mau;
 }
        private void btndiv_Click(object sender, EventArgs e)
        {
            if (bans == true)// tiep tuc thuc hien phep tinh moi
            {
                Coppy(phansoNguyengoc, phansos, ToanTuNguyengoc, a, n - 1);



                PS = true;
                button1.Enabled   = true;
                btnAdd.Enabled    = false;
                btnSub.Enabled    = false;
                btnMutipl.Enabled = false;
                btndiv.Enabled    = false;
                lefttoright       = lefttoright + 10;
                TextBox operato = new TextBox();
                this.Controls.Add(operato);
                operato.Size      = new Size(30, 30);
                operato.Top       = leftcontrol * 50;
                operato.Left      = lefttoright * (n + 10);
                operato.Text      = "/";
                operato.TextAlign = HorizontalAlignment.Center;
                operato.Font      = new Font("Microsoft Sans Serif", 10);
                lefttoright       = lefttoright + 5;
                a[n - 1]          = "/";//day la phep chia
                // phansos[n - 1] = new Phanso(Convert.ToDouble(textBox1.Text.Trim()), Convert.ToDouble(textBox2.Text.Trim()));
                phansoNguyengoc[n - 1] = new Phanso(Convert.ToDouble(textBox1.Text.Trim()), Convert.ToDouble(textBox2.Text.Trim()));
                ToanTuNguyengoc[n - 1] = "/";
            }
            else
            {
                PS = true;
                button1.Enabled   = true;
                btnAdd.Enabled    = false;
                btnSub.Enabled    = false;
                btnMutipl.Enabled = false;
                btndiv.Enabled    = false;
                lefttoright       = lefttoright + 10;
                TextBox operato = new TextBox();
                this.Controls.Add(operato);
                operato.Size      = new Size(30, 30);
                operato.Top       = leftcontrol * 50;
                operato.Left      = lefttoright * (n + 10);
                operato.Text      = "+";
                operato.TextAlign = HorizontalAlignment.Center;
                operato.Font      = new Font("Microsoft Sans Serif", 10);
                lefttoright       = lefttoright + 5;

                a[n - 1] = "/";//day la phep chia
                ToanTuNguyengoc[n - 1] = "/";
                double[] b  = new double[100];
                string[] tt = new string[100];
                double   ts = 0;
                double   ms = 0;

                if ((ktra(Tuso[n - 1].ToString()) == true) && (ktra(mauso[n - 1].ToString()) == true))//ca 2 cung co toan tu
                {
                    convert(b, tt, Tuso[n - 1].Text.Trim());
                    ts = kqcongtru(b, tt);
                    convert(b, tt, mauso[n - 1].Text.Trim());
                    ms                     = kqcongtru(b, tt);
                    phansos[n - 1]         = new Phanso(ts, ms);
                    phansoNguyengoc[n - 1] = new Phanso(ts, ms);
                }
                else if (ktra(Tuso[n - 1].ToString()) == true)//co toan tu o trong tu so
                {
                    convert(b, tt, Tuso[n - 1].Text.Trim());
                    ts                     = kqcongtru(b, tt);
                    phansos[n - 1]         = new Phanso(ts, Convert.ToDouble(mauso[n - 1].Text.Trim()));
                    phansoNguyengoc[n - 1] = new Phanso(ts, Convert.ToDouble(mauso[n - 1].Text.Trim()));
                }
                else if (ktra(mauso[n - 1].ToString()) == true)//co toan tu o trong mau
                {
                    convert(b, tt, mauso[n - 1].Text.Trim());
                    ms                     = kqcongtru(b, tt);
                    phansos[n - 1]         = new Phanso(Convert.ToDouble(Tuso[n - 1].Text.Trim()), ms);
                    phansoNguyengoc[n - 1] = new Phanso(Convert.ToDouble(Tuso[n - 1].Text.Trim()), ms);
                }

                else //ca 2 khong co toan tu
                {
                    try
                    {
                        phansoNguyengoc[n - 1] = new Phanso(Convert.ToDouble(Tuso[n - 1].Text.Trim()), Convert.ToDouble(mauso[n - 1].Text.Trim()));

                        phansos[n - 1] = new Phanso(Convert.ToDouble(Tuso[n - 1].Text.Trim()), Convert.ToDouble(mauso[n - 1].Text.Trim()));
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Tuso[n - 1].Focus();
                    }
                }
            }
        }