static void Main(string[] args) { //string nmbr = Console.ReadLine(); int base_N = 4; string strBase = "" + base_N; var myNmbr1 = MyBigNumber.CreateMyBigNumber("1000"); var lsDevision = MyBigNumber.ReturnDevisionSeparatedMdl(myNmbr1, strBase[0]); Console.WriteLine(lsDevision[0].Value()); Console.WriteLine(lsDevision[1].Value()); //string val = myNmbr.Value(); //string newLine = MyBigNumber.AddTwoLines("99", "99"); //newLine = MyBigNumber.MultiplyLineByChar("0009", '4'); //string newLine = "1"; //var lsLines = new List<string>() { "1"}; //MyBigNumber.IndentLengthWithZeroes(lsLines); //foreach (var item in lsLines) //{ // Console.WriteLine(item); //} }
public static MyBigNumber Sum2MyBigNumbers(MyBigNumber myNmbr1, MyBigNumber myNmbr2) { int smallerByAbs = MyBigNumber.SmallerByAbsIsFirstOrSecond(myNmbr1, myNmbr2); MyBigNumber bgrByAbs, smlrByAbs; int signOfBigger = 0; if (smallerByAbs == 1) { smlrByAbs = myNmbr1; bgrByAbs = myNmbr2; signOfBigger = myNmbr2.SignNmbr; } else { smlrByAbs = myNmbr2; bgrByAbs = myNmbr1; signOfBigger = myNmbr1.SignNmbr; } string biggerAbsNmbrs = bgrByAbs.PartDigits; string smallerAbsNmbrs = smlrByAbs.PartDigits; int biggerAbsFlPos = bgrByAbs.FloatPointPosition; int smallerAbsFlPos = smlrByAbs.FloatPointPosition; int biggerFlPPos = 0; if (biggerAbsFlPos > smallerAbsFlPos) { biggerFlPPos = biggerAbsFlPos; smallerAbsNmbrs = MyBigNumber.AddNmbrZero(smallerAbsNmbrs, -1 * (biggerAbsFlPos - smallerAbsFlPos)); } else { biggerFlPPos = smallerAbsFlPos; biggerAbsNmbrs = MyBigNumber.AddNmbrZero(biggerAbsNmbrs, -1 * (smallerAbsFlPos - biggerAbsFlPos)); } if (smallerAbsNmbrs.Length < biggerAbsNmbrs.Length) { smallerAbsNmbrs = MyBigNumber.AddNmbrZero(smallerAbsNmbrs, biggerAbsNmbrs.Length - smallerAbsNmbrs.Length); } string newStrPartDigits; if ((myNmbr1.SignNmbr * myNmbr2.SignNmbr) >= 0) { newStrPartDigits = MyBigNumber.AddTwoLines(biggerAbsNmbrs, smallerAbsNmbrs); } else { newStrPartDigits = MyBigNumber.BiggerMinusSmaller(biggerAbsNmbrs, smallerAbsNmbrs); } var myNmbr3 = new MyBigNumber() { PartDigits = newStrPartDigits, SignNmbr = signOfBigger, FloatPointPosition = biggerFlPPos }; string newStringVal = myNmbr3.Value(); return(MyBigNumber.CreateMyBigNumber(newStringVal)); }
public static List <MyBigNumber> ReturnDevisionSeparatedMdl(MyBigNumber myBigNmbr, char base_N_inCHAR) { string strBase = base_N_inCHAR.ToString(); string intBigPart = MyBigNumber.DevideByN_baseInt(myBigNmbr, strBase[0]); var myIntPartBigNmbr = MyBigNumber.CreateMyBigNumber(intBigPart); string mltplr = "-" + strBase; var myHlpBig = MyBigNumber.CreateMyBigNumber(mltplr); var myNegativeIntPart = MyBigNumber.MultiplyBy(myIntPartBigNmbr, myHlpBig); var myRmnng = MyBigNumber.Sum2MyBigNumbers(myBigNmbr, myNegativeIntPart); var lsResult = new List <MyBigNumber>() { myIntPartBigNmbr, myRmnng }; return(lsResult); }
public static MyBigNumber MultiplyBy(MyBigNumber myBigNumber, MyBigNumber myBigMultiplier) { string tmpNmbrString = myBigNumber.PartDigits; string tmpMltplrString = myBigMultiplier.PartDigits; var lstMtpldLines = new List <string>(tmpMltplrString.Length); for (int i = tmpMltplrString.Length - 1; i >= 0; i--) { string line = MyBigNumber.MultiplyLineByChar(tmpNmbrString, tmpMltplrString[i]); line = MyBigNumber.AddNmbrZero(line, (-1 * (tmpMltplrString.Length - 1 - i))); lstMtpldLines.Add(line); } MyBigNumber.IndentLengthWithZeroes(lstMtpldLines); string lineSum = lstMtpldLines[0]; for (int i = 1; i < lstMtpldLines.Count; i++) { string tmpLine = lstMtpldLines[i]; var lsAppend = new List <string>(2); lsAppend.Add(lineSum); lsAppend.Add(tmpLine); MyBigNumber.IndentLengthWithZeroes(lsAppend); lineSum = MyBigNumber.AddTwoLines(lsAppend[0], lsAppend[1]); } int pstnFloatPoint = myBigNumber.FloatPointPosition + myBigMultiplier.FloatPointPosition; int nmbrLeadZeroes = pstnFloatPoint - lineSum.Length + 1; if (nmbrLeadZeroes > 0) { lineSum = MyBigNumber.AddNmbrZero(lineSum, nmbrLeadZeroes); } int newSign = myBigMultiplier.SignNmbr * myBigNumber.SignNmbr; var newMyNumber = new MyBigNumber() { PartDigits = lineSum, FloatPointPosition = pstnFloatPoint, SignNmbr = newSign }; string resultValue = newMyNumber.Value(); var resMyNumber = MyBigNumber.CreateMyBigNumber(resultValue); return(resMyNumber); }