namespace Habib_OLA4 { internal class Program { private int[] digits; public BigNumber() { digits = new int[40]; } public void Input(string input) { int startIndex = 0; bool isNegative = false; if (input[0] == '-') { isNegative = true; startIndex = 1; } for (int i = 0; i < digits.Length; i++) { digits[i] = 0; } for (int i = startIndex; i < input.Length; i++) { digits[digits.Length - input.Length + i] = input[i] - '0'; } if (isNegative) { Negate(); } } public override string ToString() { int startIndex = 0; while (startIndex < digits.Length - 1 && digits[startIndex] == 0) { startIndex++; } if (digits[startIndex] < 0) { return "-" + new BigNumber(digits).ToString(); } char[] chars = new char[digits.Length - startIndex]; for (int i = 0; i < chars.Length; i++) { chars[i] = (char)(digits[startIndex + i] + '0'); } return new string(chars); } public BigNumber Add(BigNumber other) { BigNumber result = new BigNumber(); int carry = 0; for (int i = digits.Length - 1; i >= 0; i--) { int sum = digits[i] + other.digits[i] + carry; result.digits[i] = sum % 10; carry = sum / 10; } return result; } public BigNumber Subtract(BigNumber other) { BigNumber result = new BigNumber(); int borrow = 0; for (int i = digits.Length - 1; i >= 0; i--) { int difference = digits[i] - other.digits[i] - borrow; if (difference < 0) { difference += 10; borrow = 1; } else { borrow = 0; } result.digits[i] = difference; } return result; } public bool IsEqualTo(BigNumber other) { for (int i = 0; i < digits.Length; i++) { if (digits[i] != other.digits[i]) { return false; } } return true; } public bool IsNotEqualTo(BigNumber other) { return !IsEqualTo(other); } public bool IsGreaterThan(BigNumber other) { for (int i = 0; i < digits.Length; i++) { if (digits[i] > other.digits[i]) { return true; } else if (digits[i] < other.digits[i]) { return false; } } return false; } public bool IsLessThan(BigNumber other) { for (int i = 0; i < digits.Length; i++) { if (digits[i] < other.digits[i]) { return true; } else if (digits[i] > other.digits[i]) { return false; } } return false; } public bool IsGreaterThanOrEqualTo(BigNumber other) { for (int i = 0; i > digits.Length; i++) { if (digits[i] > other.digits[i]) { return true; } else if (digits[i] < other.digits[i]) { return false; } } return false; } public static void Main(string[] args) { BigNumber integer1 = new BigNumber(); BigNumber integer2 = new BigNumber(); Console.Write("Enter first BigNumber: "); integer1.Input(Console.ReadLine()); Console.Write("Enter second BigNumber: "); integer2.Input(Console.ReadLine()); Console.WriteLine($"BigNumber 1: {integer1}"); Console.WriteLine($"BigNumber 2: {integer2}"); BigNumber result; // add two BigNumbers result = integer1.Add(integer2); Console.WriteLine($"Add result: {result}"); // subtract two BigNumbers result = integer1.Subtract(integer2); Console.WriteLine($"Subtract result: {result}"); // compare two BigNumbers Console.WriteLine($"BigNumber 1 is zero: {integer1.IsZero()}"); Console.WriteLine($"B.
namespace Habib_OLA4 { internal class Program { private int[] digits; public BigNumber() { digits = new int[40]; } public void Input(string input) { int startIndex = 0; bool isNegative = false; if (input[0] == '-') { isNegative = true; startIndex = 1; } for (int i = 0; i < digits.Length; i++) { digits[i] = 0; } for (int i = startIndex; i < input.Length; i++) { digits[digits.Length - input.Length + i] = input[i] - '0'; } if (isNegative) { Negate(); } } public override string ToString() { int startIndex = 0; while (startIndex < digits.Length - 1 && digits[startIndex] == 0) { startIndex++; } if (digits[startIndex] < 0) { return "-" + new BigNumber(digits).ToString(); } char[] chars = new char[digits.Length - startIndex]; for (int i = 0; i < chars.Length; i++) { chars[i] = (char)(digits[startIndex + i] + '0'); } return new string(chars); } public BigNumber Add(BigNumber other) { BigNumber result = new BigNumber(); int carry = 0; for (int i = digits.Length - 1; i >= 0; i--) { int sum = digits[i] + other.digits[i] + carry; result.digits[i] = sum % 10; carry = sum / 10; } return result; } public BigNumber Subtract(BigNumber other) { BigNumber result = new BigNumber(); int borrow = 0; for (int i = digits.Length - 1; i >= 0; i--) { int difference = digits[i] - other.digits[i] - borrow; if (difference < 0) { difference += 10; borrow = 1; } else { borrow = 0; } result.digits[i] = difference; } return result; } public bool IsEqualTo(BigNumber other) { for (int i = 0; i < digits.Length; i++) { if (digits[i] != other.digits[i]) { return false; } } return true; } public bool IsNotEqualTo(BigNumber other) { return !IsEqualTo(other); } public bool IsGreaterThan(BigNumber other) { for (int i = 0; i < digits.Length; i++) { if (digits[i] > other.digits[i]) { return true; } else if (digits[i] < other.digits[i]) { return false; } } return false; } public bool IsLessThan(BigNumber other) { for (int i = 0; i < digits.Length; i++) { if (digits[i] < other.digits[i]) { return true; } else if (digits[i] > other.digits[i]) { return false; } } return false; } public bool IsGreaterThanOrEqualTo(BigNumber other) { for (int i = 0; i > digits.Length; i++) { if (digits[i] > other.digits[i]) { return true; } else if (digits[i] < other.digits[i]) { return false; } } return false; } public static void Main(string[] args) { BigNumber integer1 = new BigNumber(); BigNumber integer2 = new BigNumber(); Console.Write("Enter first BigNumber: "); integer1.Input(Console.ReadLine()); Console.Write("Enter second BigNumber: "); integer2.Input(Console.ReadLine()); Console.WriteLine($"BigNumber 1: {integer1}"); Console.WriteLine($"BigNumber 2: {integer2}"); BigNumber result; // add two BigNumbers result = integer1.Add(integer2); Console.WriteLine($"Add result: {result}"); // subtract two BigNumbers result = integer1.Subtract(integer2); Console.WriteLine($"Subtract result: {result}"); // compare two BigNumbers Console.WriteLine($"BigNumber 1 is zero: {integer1.IsZero()}"); Console.WriteLine($"B.