//Взять public TFractNumber Take() { TFractNumber res = number.Copy(); return(res); }
//Конструктор public TFractMemory() { number = new TFractNumber("0", "1", 10); state = 0; }
//Записать public void Write(TFractNumber E) { number = E.Copy(); state = 1; }
//Копия числа public TFractNumber Copy() { TFractNumber res = new TFractNumber(number.numer, number.denom, p); return(res); }
//Конструктор public TFractProcessor() { Lop_Res = new TFractNumber("0", "1", 10); Rop = new TFractNumber("0", "1", 10); operation = 0; }
//Добавить public void Add(TFractNumber E) { if (state == 1) { number = number.Summ(E); } else { Write(E); } }
//Выполнить операцию 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; } }
//вычислить функцию 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; } }
//Умножить 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); }
//Вычесть 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); }
//Обратить 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); }
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); }