public string ChangeSystemBase(int _base) { number = converter.ConvertBaseTo10(number.systemBase, editor.number); number.systemBase = _base; editor.number = converter.Convert10ToBase(number.systemBase, number.GetNumberString()); return(editor.number); }
public TProc() { Operation = TOprtn.None; Function = TFunc.None; Lop_Res = new TPNumber(); Rop = new TPNumber(); }
public string ExecuteMemoryCommand(MemoryCommand cmd) { number = converter.ConvertBaseTo10(number.systemBase, editor.number); switch (cmd) { case MemoryCommand.add: memory.Add(number); break; case MemoryCommand.sub: memory.Sub(number); break; case MemoryCommand.clear: memory.Clear(number); break; case MemoryCommand.read: number = memory.ReadNumber(number); break; case MemoryCommand.write: memory.Write(number); break; default: break; } editor.number = converter.Convert10ToBase(number.systemBase, number.GetNumberString()); return(editor.number); }
public TPNumber Divide(TPNumber d) { if (d.number == 0) { return(null); } return(new TPNumber(number / d.number, systemBase, accuracy)); }
public TPNumber Invert(TPNumber d) { if (number == 0) { return(null); } return(new TPNumber(1 / number, systemBase, accuracy)); }
void SecondOperand() { if (oneRepeat) { number = converter.ConvertBaseTo10(number.systemBase, editor.number); } processor.WriteRightOperand(number); processor.ExecuteOperation(); editor.number = converter.Convert10ToBase(number.systemBase, processor.ReadLeftOperand().number.ToString()); setState(SecondOperand); }
public string GetResult() { if (oneRepeat) { number = converter.ConvertBaseTo10(number.systemBase, editor.number); oneRepeat = false; } update(); setState(SecondOperand); return(editor.number); }
void ExecuteFunction(TProc.TFunc func) { number = converter.ConvertBaseTo10(number.systemBase, editor.number); processor.WriteRightOperand(number); processor.WriteFunction(func); processor.ExecuteFunction(); if (activeState == FirstOperand) { processor.WriteLeftOperand(processor.ReadRightOperand()); setState(SecondOperand); } editor.number = converter.Convert10ToBase(number.systemBase, processor.ReadRightOperand().number.ToString()); }
public void ExecuteOperation() { switch (Operation) { case TOprtn.Add: Lop_Res = Lop_Res.Add(Rop); break; case TOprtn.Sub: Lop_Res = Lop_Res.Subtract(Rop); break; case TOprtn.Mul: Lop_Res = Lop_Res.Multiply(Rop); break; case TOprtn.Dvd: Lop_Res = Lop_Res.Divide(Rop); break; default: break; } }
public TPNumber Add(TPNumber d) { return(new TPNumber(number + d.number, systemBase, accuracy)); }
void FirstOperand() { number = converter.ConvertBaseTo10(number.systemBase, editor.number); processor.WriteLeftOperand(number); setState(SecondOperand); }
public TPNumber ConvertBaseTo10(int p1, string strnum) { int mod, k = 0, flag_sym = 0, check_num = 0; TPNumber numres = new TPNumber(0, p1); if (strnum == "0") { return(numres); } double num = 0; if (p1 == 10) { IFormatProvider formatter = new NumberFormatInfo { NumberDecimalSeparator = "." }; numres.number = double.Parse(strnum, formatter); return(numres); } int i = 0, count = 0; if (strnum[0] == '-') { flag_sym = 1; strnum = strnum.Remove(0, 1); } strnum = strnum.Replace(',', '.'); while (i < strnum.Length) { if (strnum[i] == '.') { count = strnum.Length - i - 1; break; } i++; } k = -count; check_num = checkNumBase(p1, strnum); if (strnum[0] == '0' && strnum[1] != '.') { check_num = 0; } if (check_num == 1) { for (int j = strnum.Length - 1; j >= 0; j--) { if (strnum[j] >= '0' && strnum[j] <= '9') { num = strnum[j] - '0'; numres.number += num * Math.Pow(p1, k); k++; } else if (strnum[j] >= 'A' && strnum[j] <= 'F') { num = strnum[j] - 55; numres.number += num * Math.Pow(p1, k); k++; } } if (flag_sym == 1) { numres.number *= -1; } return(numres); } else { return(numres.Reset()); } }
public TPNumber Square(TPNumber d) { return(new TPNumber(number * number, systemBase, accuracy)); }
public TMemory() { FNumber = new TPNumber(); FState = MState._Off; }
public void WriteRightOperand(TPNumber Operand) { Rop = Operand.Copy(); }
public TPNumber Subtract(TPNumber d) { return(new TPNumber(number - d.number, systemBase, accuracy)); }
public void Write(TPNumber E) { FNumber = E.Copy(); FState = MState._On; }
public TPNumber ReadNumber(TPNumber E) { FNumber.systemBase = E.systemBase; return(FNumber.Copy()); }
public void Clear(TPNumber E) { FNumber.Reset(); FNumber.systemBase = E.systemBase; FState = MState._Off; }
public void Sub(TPNumber E) { FNumber.systemBase = E.systemBase; FNumber = FNumber.Subtract(E); }
public void Add(TPNumber E) { FNumber.systemBase = E.systemBase; FNumber = FNumber.Add(E); }
public TPNumber Multiply(TPNumber d) { return(new TPNumber(number * d.number, systemBase, accuracy)); }
public void WriteLeftOperand(TPNumber Operand) { Lop_Res = Operand.Copy(); }