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

In c++ the largest int value is 2 1 4 7 4 8 3 6 4 7 So , an integer larger than

ID: 3625446 • Letter: I

Question

In c++ the largest int value is 2 1 4 7 4 8 3 6 4 7
So , an integer larger than this cannot be stored and processed as an integer .
Similarly, if the sum or product of two positive integer is greater than 2 1 4 7 4 8 3 6 4 7 the result will be incorrect. One way to store and manipulate large integer is to store each individual digit of the number in an arry.
Write a program that input two positive integers of, at most,20 digits and output the sum of the numbers.If the sum of the number has more than 20 digits output the sum with an appropriate message .your program must at laest contain a function to raed and store a number into an array and another function to output the sum of the numbers
(Hint : Read the numbers as strings and store the digits of the number in the reverse order)
Explain how to add large integers using arrays .However in the above exercise , the program could add only integers of, at most , 20 digits .Design a class named largerIntegers such that an object of this class can store an integer of any number of digits.Add operations to add, subtract, multiply , and compare integers stored in two objects . Also add constructors to properly initialize objects and function to set , retrieve and print the values of objects.

By C++

Explanation / Answer

please rate - thanks

CRAMSTER rule - 1 question per post

this is really 2--here is the "more difficult"

#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;
#define DIGITS 20
class largeintegers
{
public:
largeintegers();
void Input();
void Output();
largeintegers operator+( largeintegers );
largeintegers operator-( largeintegers );
largeintegers operator*( largeintegers );
int operator==( largeintegers);
private:
int integer[ DIGITS ];
int len;
};
void largeintegers::Output()
{
int i;
for (i=len-1;i >= 0; i-- )
cout<<integer[i];
}
void largeintegers::Input()
{string in;
int i,j,k;
cout<<"Enter a number("<<DIGITS<<" digits max):";
cin>>in;
for(i=0;in[i]!='';i++);
len=i;
k=0;
for(j=i-1;j>=0;j--)
    integer[j]=in[k++]-48;
}
largeintegers::largeintegers( )
{
for ( int i = 0; i <DIGITS; i++ )
      integer[ i ] = 0;
len=DIGITS-1;
}
int largeintegers::operator==( largeintegers op2 )
{int i;
if(len<op2.len)
      return -1;
if(op2.len<len)
      return 1;
for(i=len-1;i>=0;i--)
      if(integer[i]<op2.integer[i])
           return -1;
       else if(op2.integer[i]<integer[i])
             return 1;
return 0;
}
largeintegers largeintegers::operator+( largeintegers op2 )
{largeintegers temp;
int carry = 0;
int c,i;
if(len>op2.len)
    c=len;
else
    c=op2.len;


for ( i=0; i<c; i++ )
     {temp.integer[ i ] =integer[ i ] + op2.integer[ i ] + carry;
     if ( temp.integer[ i ] > 9 )
         {temp.integer[ i ] %= 10;
          carry = 1;
         }
     else
          carry = 0;
     }
if(carry==1)
    {temp.len=c+1;
    if(temp.len>=DIGITS)
          cout<<"***OVERFLOW***** ";
    else
         temp.integer[i]=carry;
   
    }
else    
   temp.len=c;
return temp;
}
largeintegers largeintegers::operator-( largeintegers op2 )
{largeintegers temp;
int c;
if(len>op2.len)
    c=len;
else
    c=op2.len;
int borrow = 0;
for( int i = c;i >= 0;i--)
if(borrow==0)
    {if(integer[i]>=op2.integer[i])
           temp.integer[i]=integer[i]-op2.integer[i];
    else
          {borrow=1;
          temp.integer[i]=integer[i]+10-op2.integer[i];
          }
    }
else
    {borrow=0;
    if(integer[i]-1>=op2.integer[i])
           temp.integer[i]=integer[i]-1-op2.integer[i];
      else
          {borrow=1;
          temp.integer[i]=integer[i]-1+10-op2.integer[i];
          }
      }
temp.len=c;
return temp;
}   
largeintegers largeintegers::operator*( largeintegers op2 )
    { largeintegers temp;
      int i,j,k,tmp,m=0;
       for (int i=0; i<op2.len; i++)
        { k=i;
        for (j=0; j< len; j++)
           {tmp = integer[ j ] * op2.integer[i];
            temp.integer[k] =temp.integer[k]+tmp;
            temp.integer[k+1] =temp.integer[k+1]+ temp.integer[k]/10;
            temp.integer[k] %=10;
            k++;
            if(k>m)
                m=k;
                }
        }
        temp.len=m;
         if(temp.len>DIGITS)
          cout<<"***OVERFLOW***** ";
        return temp;
    }


using namespace std;
int main()
{int c;
largeintegers n1,n2,result;
n1.Input();
n2.Input();
n1.Output();
cout <<" + ";
n2.Output();
result=n1+n2;
cout<< " = " ;
result.Output();
cout << " ";
n1.Output();
cout <<" - ";
n2.Output();
result=n1-n2;
cout<< " = " ;
result.Output();
cout << " ";
n1.Output();
cout <<" * ";
n2.Output();
result=n1*n2;
cout<< " = " ;
result.Output();
cout << " ";
c=n1==n2;
n1.Output();
switch (c)
{case -1: cout<<" is less than ";
            break;
   case 0: cout<<" is equal to ";
            break;
    case 1: cout<<" is greater than ";
            break;
    }  
n2.Output();
cout << " ";                
system("pause");
}



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