コード例 #1
0
        public Drob Pow(int x) // степень
        {
            Drob t = new Drob(Math.Pow(c, x), Math.Pow(z, x));

            Drob.SetFormat(t);//сокращаем дробь
            return(t);
        }
コード例 #2
0
        //процедура по сокращению дроби
        public static Drob SetFormat(Drob a)
        {
            double max = 0;

            //выбираем что больше числитель или знаменатель
            if (a.c > a.z)
            {
                max = Math.Abs(a.z);//ВНИМАНИЕ! берем по модулю, что работало и с отрицательными
            }
            else
            {
                max = Math.Abs(a.c);//ВНИМАНИЕ! берем по модулю, что работало и с отрицательными
            }
            //поиск от максимума до 2
            for (double i = max; i >= 2; i--)
            {
                //такого числа, поделив на которое бы делилось без
                //остатка и на числитель и на знаменатель
                if ((a.c % i == 0) & (a.z % i == 0))
                {
                    a.c = a.c / i;
                    a.z = a.z / i;
                }
            }
            //Определяемся со знаком
            //если в знаменателе минус, поднимаем его наверх
            if ((a.z < 0))
            {
                a.c = -1 * (a.c);
                a.z = Math.Abs(a.z);
            }
            return(a); //возращаем результат
        }
コード例 #3
0
        public Drob sqrt() // извлечение корня
        {
            Drob t = new Drob(Math.Sqrt(c), Math.Sqrt(z));

            Drob.SetFormat(t);//сокращаем дробь
            return(t);
        }
コード例 #4
0
        public static Drob operator /(Drob a, Drob b) //деление дробей
        {
            Drob t = new Drob(1, 1);                  //создание и инициализация новой дроби

            t.c = (a.c * b.z);                        //числитель новой дроби
            t.z = a.z * b.c;                          //знаменатель новой дроби
            Drob.SetFormat(t);                        //сокращаем дробь
            return(t);                                //возвращаем результат
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: Alinli17/PP_Calculator
 private void Sqrt_Click(object sender, EventArgs e) // корень
 {
     try
     {
         znak = '√';
         a    = Fill();
         string rezult = "√ " + a.ToString();
         rez.Text = rezult;
     }
     catch (Exception ex) { MessageBox.Show(ex.Message); }
 }
コード例 #6
0
        private void button14_Click(object sender, EventArgs e)
        {
            try
            {
                if ((textBox1.Text != "") && (textBox2.Text != "") && (textBox3.Text != ""))
                {
                    secondDrob.SetDrob(ch: Convert.ToInt32(textBox1.Text),
                                       chisl: Convert.ToInt32(textBox2.Text),
                                       znam: Convert.ToInt32(textBox3.Text));

                    // Запоминание операции
                    switch (currentoper)
                    {
                    case "+":
                        result = firstDrob.Plus(secondDrob);
                        break;

                    case "-":
                        result = firstDrob.Minus(secondDrob);
                        break;

                    case "/":
                        result = firstDrob.Division(secondDrob);
                        break;

                    case "*":
                        result = firstDrob.Multiplication(secondDrob);
                        break;

                    default: break;
                    }
                    // Очистка информации об операции
                    currentoper = "";
                    //Вывод результата
                    textBox1.Text = result.Ch.ToString();
                    textBox2.Text = result.Chisl.ToString();
                    textBox3.Text = result.Znam.ToString();
                    //Чистим информацию о дробях
                    firstDrob.CleanDrob();
                    secondDrob.CleanDrob();
                    result.CleanDrob();



                    textBox1.Focus();
                    button14.Enabled = false;
                }
            }
            catch (Exception b)
            {
                MessageBox.Show("Ошибка");
            }
        }
コード例 #7
0
ファイル: Form1.cs プロジェクト: Alinli17/PP_Calculator
 private void Power_Click(object sender, EventArgs e) // степень
 {
     try
     {
         znak        = '^';
         a           = Fill();
         pow.Enabled = true;
         string rezult = a.ToString() + "^";
         rez.Text = rezult;
     }
     catch (Exception ex) { MessageBox.Show(ex.Message); }
 }
コード例 #8
0
        //Умножение
        public Drob Multiplication(Drob secondDrob)
        {
            this.Dtrans();
            secondDrob.Dtrans();

            Drob result = new Drob();

            result.chisl = this.chisl * secondDrob.chisl;
            result.znam  = this.znam * secondDrob.znam;

            return(result);
        }
コード例 #9
0
ファイル: Form1.cs プロジェクト: Alinli17/PP_Calculator
 private void Amount_Click(object sender, EventArgs e) // +
 {
     try
     {
         znak = '+';
         a    = Fill();
         string rezult = a.ToString() + " + ";
         rez.Text = rezult;
         whole.Clear();
         numerator.Clear();
         denominator.Clear();
     }
     catch (Exception ex) { MessageBox.Show(ex.Message); }
 }
コード例 #10
0
        //Вычитание
        public Drob Minus(Drob secondDrob)
        {
            this.Dtrans();
            secondDrob.Dtrans();

            Drob result = new Drob();

            result.chisl = (this.chisl * secondDrob.znam) - (this.znam * secondDrob.chisl);
            result.znam  = this.znam * secondDrob.znam;

            result.ReTrans();

            return(result);
        }
コード例 #11
0
ファイル: Form1.cs プロジェクト: Alinli17/PP_Calculator
        private void Result_Click(object sender, EventArgs e) // =
        {
            try
            {
                Drob d = new Drob();
                switch (znak)
                {
                case '+':
                    b = Fill();
                    d = a + b;
                    Drob.SetFormat(d);
                    rez.Text += b.ToString() + " = " + d.ToString();
                    break;

                case '-':
                    b = Fill();
                    d = a - b;
                    Drob.SetFormat(d);
                    rez.Text += b.ToString() + " = " + d.ToString();
                    break;

                case '*':
                    b = Fill();
                    d = a * b;
                    Drob.SetFormat(d);
                    rez.Text += b.ToString() + " = " + d.ToString();
                    break;

                case '/':
                    b = Fill();
                    d = a / b;
                    Drob.SetFormat(d);
                    rez.Text += b.ToString() + " = " + d.ToString();
                    break;

                case '√':
                    d         = a.sqrt();
                    rez.Text += " = " + d.ToString();
                    break;

                case '^':
                    int u = Convert.ToInt32(pow.Text);
                    d         = a.Pow(u);
                    rez.Text += u.ToString() + " = " + d.ToString();
                    break;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
コード例 #12
0
ファイル: Form1.cs プロジェクト: Alinli17/PP_Calculator
        private Drob Fill()
        {
            Drob c;

            if (whole.Text != "")
            {
                c = new Drob(Convert.ToDouble(whole.Text), Convert.ToDouble(numerator.Text),
                             Convert.ToDouble(denominator.Text));
            }
            else
            {
                c = new Drob(Convert.ToDouble(numerator.Text),
                             Convert.ToDouble(denominator.Text));
            }
            return(c);
        }