Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Create a class HugeInteger which uses a 40-element array of digits to store inte

ID: 664342 • Letter: C

Question

Create a class HugeInteger which uses a 40-element array of digits to store integers as large as 40 digits each. Provide methods Input, ToString, Add and Subtract. For comparing HugeInteger objects, provide the following methods: IsEqualTo, IsNotEqualTo, IsGrea- terThan, IsLessThan, IsGreaterThanOrEqualTo and IsLessThanOrEqualTo. Each of these is a meth- od that returns true if the relationship holds between the two HugeInteger objects and returns false if the relationship does not hold. Provide method IsZero. If you feel ambitious, also provide methods Multiply, Divide and Remainder. In the Input method, use the string method ToChar- Array to convert the input string into an array of characters, then iterate through these characters to create your HugeInteger. [Note: The .NET Framework Class Library includes type BigInteger for arbitrary sized integer values.]

I need this in C#. Output gonna looks like this.

Explanation / Answer

using System;
using System.Collections.Generic;

namespace HugeInteger
{
    internal class HugeInteger
    {
//declaring variables
        internal const int DigitArray = 40;
        internal bool IsPositive;
        internal readonly int[] Integer;

// declaring integer function
        internal HugeInteger()
        {
            Integer = new int[DigitArray];
            IsPositive = true;
        }

// function converting to string
        internal void Convert(String input)
        {
            var charArray = input.ToCharArray();
            if (charArray[0] == '-')
                IsPositive = false;
            if (IsPositive)
                if (Integer != null)
                    if (Integer.Length > DigitArray - charArray.Length)
                        Integer[DigitArray - charArray.Length] =
                            charArray[0] - '0';
            for (var i = 1; i < charArray.Length; i++)
                if (Integer != null &&
                    Integer.Length > DigitArray - charArray.Length + i)
                    Integer[DigitArray - charArray.Length + i] =
                        charArray[i] - '0';
        }

// adding two integer
        internal HugeInteger Add(HugeInteger val)
        {
            var sum = new HugeInteger();
            if (IsPositive == val.IsPositive)
                sum = PositiveAdd(val);
            else if (IsPositive && (!val.IsPositive))
            {
                val.IsPositive = true;
                if (IsGreaterThan(val))
                    sum = PositiveSubtract(val);
                else
                {
                    sum = val.PositiveSubtract(this);
                    sum.IsPositive = false;
                }
                val.IsPositive = false;
            }
            else if (!IsPositive && val.IsPositive)
            {
                val.IsPositive = false;
                if (IsGreaterThan(val))
                    sum = val.PositiveSubtract(this);
                else
                {
                    sum = PositiveSubtract(val);
                    sum.IsPositive = false;
                }
                val.IsPositive = true;
            }
            return sum;
        }

// adding two positive integer
        internal HugeInteger PositiveAdd(HugeInteger val)
        {
            var sum = new HugeInteger();
            var carryover = 0;
            for (var i = 39; i >= 0; i--)
            {
                sum.Integer[i] =
                    Integer[i] + val.Integer[i] + carryover;
                if (sum.Integer[i] > 9)
                {
                    sum.Integer[i] %= 10;
                    carryover = 1;
                }
                else
                    carryover = 0;
            }
            if (!IsPositive)
                sum.IsPositive = false;
            return sum;
        }

//subtracting two integer values
        internal HugeInteger Subtract(HugeInteger val)
        {
            HugeInteger difference;
            if (IsPositive && (!val.IsPositive))
                difference = PositiveAdd(val);
            else if (!IsPositive && val.IsPositive)
                difference = PositiveAdd(val);
            else
            {
                var positive = IsPositive;
                var result = IsPositive;
                IsPositive = true;
                val.IsPositive = true;
                if (IsGreaterThan(val))
                    difference = PositiveSubtract(val);
                else
                {
                    difference = val.PositiveSubtract(this);
                    result = !positive;
                }
                IsPositive = positive;
                val.IsPositive = positive;
                difference.IsPositive = result;
            }
            return difference;
        }

// subtracting two positive integer
        internal HugeInteger PositiveSubtract(HugeInteger val)
        {
            var difference = new HugeInteger();
            for (var i = 39; i >= 0; i--)
            {
                if (Integer[i] < val.Integer[i])
                {
                    Integer[i] += 10;
                    val.Integer[i - 1]--;
                }
                difference.Integer[i] = Integer[i] - val.Integer[i];
            }
            return difference;
        }

// finding non zero position
        internal int FindFirstNonZeroPosition()
        {
            const int position = 39;
            for (var i = 0; i < DigitArray; i++)
                if (Integer[i] > 0)
                    return i;
            return position;
        }

// convert to string values
        public override String ToString()
        {
            var output = "";
            if (!IsPositive)
                output = "-";
            for (var i = FindFirstNonZeroPosition(); i < DigitArray; i++)
                output += Integer[i];
            return output;
        }

// If the value is equal to integer then it wil true otherwise false
        internal bool IsEqualTo(HugeInteger val)
        {
            if (IsPositive != val.IsPositive)
                return false;
            for (var i = 0; i < DigitArray; i++)
                if (Integer[i] != val.Integer[i])
                    return false;
            return true;
        }

// If the value is not equal to integer then it wil true otherwise false
        internal bool IsNotEqualTo(HugeInteger val)
        {
            return !IsEqualTo(val);
        }

// If the value is greater than integer then it wil true otherwise false
        internal bool IsGreaterThan(HugeInteger val)
        {
            if (IsPositive && (!val.IsPositive))
                return true;
            if (!IsPositive && val.IsPositive)
                return false;
            if (FindFirstNonZeroPosition() >
                val.FindFirstNonZeroPosition())
                return !IsPositive;
            if (FindFirstNonZeroPosition() <
                val.FindFirstNonZeroPosition())
                return IsPositive;
            for (var i = 0; i < DigitArray; i++)
            {
                if (Integer[i] > val.Integer[i])
                    return IsPositive;
                if (Integer[i] < val.Integer[i])
                    return !IsPositive;
            }
            return false;
        }

// If the value is less than integer then it wil true otherwise false
        internal bool IsLessThan(HugeInteger val)
        {
            return !(IsGreaterThan(val) ||
                     IsEqualTo(val));
        }

// If the value is greater than or equal to then it wil true otherwise false
        internal bool IsGreaterThanOrEqualTo(HugeInteger val)
        {
            return !IsLessThan(val);
        }

// If the value is less than or equal to then it wil true otherwise false
        internal bool IsLessThanOrEqualTo(HugeInteger val)
        {
            return !IsGreaterThan(val);
        }

// If the value is equal to zero then it wil true otherwise false
        internal bool IsZero()
        {
            for (var i = 0; i < DigitArray; i++)
                if (Integer[i] != 0)
                    return false;
            return true;
        }
    }
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote