Beispiel #1
0
        //Взять

        public TNumber Take()

        {
            TNumber res = number.Copy();

            return(res);
        }
Beispiel #2
0
        //Записать

        public void Write(TNumber E)

        {
            number = E.Copy();

            state = 1;
        }
Beispiel #3
0
        //Конструктор

        public TMemory()

        {
            number = new TNumber("0", 10);

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

        public TNumber Copy()

        {
            TNumber res = new TNumber(number, p);

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

        public TProcessor()

        {
            Lop_Res = new TNumber("0", 10);

            Rop = new TNumber("0", 10);

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

        public void Add(TNumber E)

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

            else
            {
                Write(E);
            }
        }
Beispiel #7
0
        //Вычесть

        public TNumber Sub(TNumber num)

        {
            TNumber res = new TNumber(number, p);

            res.number = conv.P10_To_P((conv.P_To_10(number) - conv.P_To_10(num.number))).ToString();

            res.number = res.number.Replace(',', '.');

            res.number = deleteZero(res.number);

            return(res);
        }
Beispiel #8
0
        //Квадрат

        public TNumber Sqr()

        {
            TNumber res = new TNumber(number, p);

            res.number = conv.P10_To_P(Math.Pow(conv.P_To_10(number), 2)).ToString();

            res.number = res.number.Replace(',', '.');

            res.number = deleteZero(res.number);

            return(res);
        }
Beispiel #9
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;
            }
        }
Beispiel #10
0
        //вычислить функцию

        public void CalculateFunction(int n)

        {
            switch (n)

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

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

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

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

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

            case 33: Rop = Rop.Sqr(); break;
            }
        }
Beispiel #11
0
        /*Выполнить команду*/

        public string DoCommand(int n)
        {
            string str = "";

            TNumber buf = new TNumber("0", 10);

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

            {
                str = editor.AddSymbol(n);

                switch (editor.State)
                {
                case 3: editor.State = 0; break;

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

            switch (n)

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

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

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

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

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

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

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

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

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


            case 28:

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

                str = Preparation(editor.number, n);

                break;

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


            case 31: str = ExecFunc(editor.number, n); break;

            case 32: str = ExecFunc(editor.number, n); break;

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

            case 40: str = ExecOperation(editor.number); break;
            }

            return(str);
        }