大数相加

#include
#include
#include
#include

using namespace std;

class very_long_int{
 friend istream& operator>>(istream& instream,very_long_int& very_long);
 friend ostream& operator<<(ostream& outstream,const very_long_int very_long);
public:
 very_long_int():digist(0){}
 very_long_int operator + (const very_long_int& other_very_long);
 very_long_int operator * (const very_long_int& other_number);
private:
 vector digist;
 char least(unsigned i) const;

};

istream& operator >> (istream& instream,very_long_int& very_long)
{
 const char LOWEST_DIGIST_CHAR = '0';
 const char HIGHEST_DIGIST_CHAR = '9';
 const char SENTINEL = 'X';

 char digist_char;

 very_long.digist.erase(very_long.digist.begin(),very_long.digist.end());

 do
 {
  instream >> digist_char;
  if ( (LOWEST_DIGIST_CHAR<= digist_char) && (digist_char <= HIGHEST_DIGIST_CHAR))
   very_long.digist.push_back(digist_char - LOWEST_DIGIST_CHAR);
 } while (digist_char != SENTINEL);

 return instream;
}

ostream& operator<<(ostream& outstream,const very_long_int very_long)
{
 for (unsigned i =0;i  outstream<<(int)very_long.digist[i];
 return outstream;
}//重载<<

very_long_int very_long_int::operator +(const very_long_int &other_very_long)
{
 unsigned carry = 0,
  large_size,
  partial_sum;

 very_long_int sum;

 if (digist.size() > other_very_long.digist.size())
  large_size = digist.size();
 else
  large_size = other_very_long.digist.size();

 for (unsigned i =0;i < large_size;++i)
 {
  partial_sum = least(i) + other_very_long.least(i) + carry;
  carry = partial_sum/10;
  sum.digist.push_back(partial_sum%10);
 }//for

 if (carry == 1)
  sum.digist.push_back(carry);
 reverse(sum.digist.begin(),sum.digist.end());
 return sum;

}//重载+


char very_long_int::least(unsigned i) const
{
 if (i >= digist.size())
  return 0;
 else
  return digist[digist.size() - i - 1];
}//least

void   main()  
{  
 very_long_int   myVeryLongInt1,   myVeryLongInt2;  
 cout   <<   "Please   input   your   very   long   int1:   "< cin   >>   myVeryLongInt1;   //注意very_long_int的结束符是X
 cout   <<"Please   input   your   very   long   int2:   "< cin   >>   myVeryLongInt2;  
 cout   <<"int1   +   int2   =   "   <<   myVeryLongInt1   +   myVeryLongInt2   <<   endl;
 cout   <<"int1   *   int2   =   "   <<   myVeryLongInt1   *   myVeryLongInt2   <<   endl;

你可能感兴趣的:(input,include)