Example #1
0
        //Взять

        public TFractNumber Take()

        {
            TFractNumber res = number.Copy();

            return(res);
        }
Example #2
0
        //Конструктор

        public TFractMemory()

        {
            number = new TFractNumber("0", "1", 10);

            state = 0;
        }
Example #3
0
        //Записать

        public void Write(TFractNumber E)

        {
            number = E.Copy();

            state = 1;
        }
Example #4
0
        //Копия числа

        public TFractNumber Copy()

        {
            TFractNumber res = new TFractNumber(number.numer, number.denom, p);

            return(res);
        }
Example #5
0
        //Конструктор

        public TFractProcessor()

        {
            Lop_Res = new TFractNumber("0", "1", 10);

            Rop = new TFractNumber("0", "1", 10);

            operation = 0;
        }
Example #6
0
        //Добавить

        public void Add(TFractNumber E)

        {
            if (state == 1)
            {
                number = number.Summ(E);
            }

            else
            {
                Write(E);
            }
        }
Example #7
0
        //Выполнить операцию

        public void ExeuteOperation()

        {
            switch (operation)

            {
            case 1: Lop_Res = Lop_Res.Summ(Rop); break;

            case 2: Lop_Res = Lop_Res.Sub(Rop); break;

            case 3: Lop_Res = Lop_Res.Mult(Rop); break;

            case 4: Lop_Res = Lop_Res.Div(Rop); break;

            default: break;
            }
        }
Example #8
0
        //вычислить функцию

        public void CalculateFunction(int n)

        {
            switch (n)

            {
            // Обратная функция

            case 30: Lop_Res = Lop_Res.Pay(); break;

            // Функция корень

            case 31: Lop_Res = Lop_Res.Sqr(); break;

            case 32: Rop = Rop.Pay(); break;

            case 33: Rop = Rop.Sqr(); break;
            }
        }
Example #9
0
        //Умножить

        public TFractNumber Mult(TFractNumber num)

        {
            TFractNumber res = new TFractNumber(number.numer, number.denom, p);

            res.number.numer = (Convert.ToInt32(number.numer) * Convert.ToInt32(num.number.numer)).ToString();

            res.number.denom = (Convert.ToInt32(number.denom) * Convert.ToInt32(num.number.denom)).ToString();

            int nod = (int)Nod(Convert.ToInt32(res.number.numer), Convert.ToInt32(res.number.denom));

            if (nod != 0)

            {
                res.number.numer = (Convert.ToInt32(res.number.numer) / nod).ToString();

                res.number.denom = (Convert.ToInt32(res.number.denom) / nod).ToString();
            }

            return(res);
        }
Example #10
0
        //Вычесть

        public TFractNumber Sub(TFractNumber num)

        {
            TFractNumber res = new TFractNumber(number.numer, number.denom, p);

            res.number.numer = (Convert.ToInt32(number.numer) * Convert.ToInt32(num.number.denom) - Convert.ToInt32(num.number.numer) * Convert.ToInt32(number.denom)).ToString();

            res.number.denom = (Convert.ToInt32(number.denom) * Convert.ToInt32(num.number.denom)).ToString();

            int nod = (int)Nod(Math.Abs(Convert.ToInt32(res.number.numer)), Math.Abs(Convert.ToInt32(res.number.denom)));

            if (nod > 0)

            {
                res.number.numer = (Convert.ToInt32(res.number.numer) / nod).ToString();

                res.number.denom = (Convert.ToInt32(res.number.denom) / nod).ToString();
            }

            return(res);
        }
Example #11
0
        //Обратить

        public TFractNumber Pay()

        {
            TFractNumber res = new TFractNumber(number.numer, number.denom, p);

            int denom = Convert.ToInt32(number.denom);

            res.number.denom = number.numer;

            res.number.numer = number.denom;

            int nod = (int)Nod(Convert.ToInt32(res.number.numer), Convert.ToInt32(res.number.denom));

            if (nod != 0)

            {
                res.number.numer = (Convert.ToInt32(res.number.numer) / nod).ToString();

                res.number.denom = (Convert.ToInt32(res.number.denom) / nod).ToString();
            }

            return(res);
        }
Example #12
0
        public string DoCommandFract(int n)

        {
            string str = "";

            TFractNumber buf = new TFractNumber("0", "1", 10);

            if (n >= 0 && n <= 15)

            {
                str = Feditor.AddSymbol(n);

                switch (Feditor.State)

                {
                case 3: Feditor.State = 0; break;

                case 2: Feditor.State = 1; break;
                }
            }

            switch (n)

            {
            case 16: str = Feditor.AddDot(TypeCalculator); break;

            case 17: str = Feditor.AddAndChangeSign(); break;

            case 18: str = Feditor.Clear(); Feditor.State = 0; processor.ResetOper(); break;

            case 20: str = "0"; Feditor.Clear(); Feditor.State = 0; break;

            /*Работа с памятью*/

            case 21: str = Feditor.number; memory.Clear(); Feditor.Clear(); /*Очистить память*/ break;

            case 22: str = TakeOutTheMemory(); /*Копировать из памяти*/ break;

            case 23: str = Feditor.number; buf.NumberString = str; buf.PInt = Fprocessor.LeftOp.PInt; Fmemory.Write(buf); /*Сохранить в память*/ break;

            case 24: str = Feditor.number; buf.NumberString = str; buf.PInt = Fprocessor.LeftOp.PInt; Fmemory.Add(buf); /*Добавить к содержимому памяти*/ break;


            case 28:

                if (processor.Operation != n - 24 && Feditor.State == 1)
                {
                    str = FExecOperation(Feditor.number);
                }

                str = FPreparation(Feditor.number, n);

                break;

            /*Выполнение функций*/

            case 30:

            case 31: str = FExecFunc(Feditor.number, n); break;

            case 32: str = FExecFunc(Feditor.number, n); break;

            /*Выполнение операций*/

            case 40: str = FExecOperation(Feditor.number); break;

            case 99: str = Feditor.Numer(); break;

            case 98: str = Feditor.Denom(); break;
            }

            if (n == 19)
            {
                str = Feditor.RemoveLastSymbol();
            }

            return(str);
        }