예제 #1
0
        //Взять

        public TComplexNumber Take()

        {
            TComplexNumber res = number.Copy();

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

        public TComplexMemory()

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

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

        public void Write(TComplexNumber E)

        {
            number = E.Copy();

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

        public TComplexNumber Copy()

        {
            TComplexNumber res = new TComplexNumber(number.re, number.im, p);

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

        public TComplexProcessor()

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

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

            operation = 0;
        }
예제 #6
0
        //Делить

        public TComplexNumber Div(TComplexNumber num)

        {
            TComplexNumber res = new TComplexNumber(number.re, number.im, p);

            res.number.re = ((Convert.ToDouble(number.re) * Convert.ToDouble(num.number.re) + Convert.ToDouble(number.im) * Convert.ToDouble(num.number.im)) / (Convert.ToDouble(num.number.re) * Convert.ToDouble(num.number.re) + Convert.ToDouble(num.number.im) * Convert.ToDouble(num.number.im))).ToString();

            res.number.im = ((Convert.ToDouble(number.im) * Convert.ToDouble(num.number.re) - Convert.ToDouble(number.re) * Convert.ToDouble(num.number.im)) / (Convert.ToDouble(num.number.re) * Convert.ToDouble(num.number.re) + Convert.ToDouble(num.number.im) * Convert.ToDouble(num.number.im))).ToString();

            return(res);
        }
예제 #7
0
        //Сложить

        public TComplexNumber Summ(TComplexNumber num)

        {
            TComplexNumber res = new TComplexNumber(number.re, number.im, p);

            res.number.re = (Convert.ToDouble(number.re) + Convert.ToDouble(num.number.re)).ToString();

            res.number.im = (Convert.ToDouble(number.im) + Convert.ToDouble(num.number.im)).ToString();

            return(res);
        }
예제 #8
0
        //Обратить

        public TComplexNumber Pay()

        {
            TComplexNumber res = new TComplexNumber(number.re, number.im, p);

            res.number.re = ((Convert.ToDouble(number.re) / (Convert.ToDouble(number.re) * Convert.ToDouble(number.re) + Convert.ToDouble(number.im) * Convert.ToDouble(number.im)))).ToString();

            res.number.im = ((Convert.ToDouble(number.im) * (-1)) / (Convert.ToDouble(number.re) * Convert.ToDouble(number.re) + Convert.ToDouble(number.im) * Convert.ToDouble(number.im))).ToString();

            return(res);
        }
예제 #9
0
        //Добавить

        public void Add(TComplexNumber E)

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

            else
            {
                Write(E);
            }
        }
예제 #10
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;
            }
        }
예제 #11
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;
            }
        }
예제 #12
0
파일: TCtrl.cs 프로젝트: Eversince001/trpo
        public string DoCommandComplex(int n)

        {
            string str = "";

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

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

            {
                str = Ceditor.AddSymbol(n);

                switch (Ceditor.State)

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

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

            switch (n)

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

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

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

            case 20: str = "0+0i"; Ceditor.Clear(); Ceditor.State = 0; break;

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

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

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

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

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

            case 28:

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

                str = CPreparation(Ceditor.number, n);

                break;

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

            case 30:

            case 31: str = CExecFunc(Ceditor.number, n); break;

            case 32: str = CExecFunc(Ceditor.number, n); break;

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

            case 40: str = CExecOperation(Ceditor.number); break;

            case 99: str = Ceditor.Re(); break;

            case 98: str = Ceditor.Im(); break;
            }

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

            return(str);
        }