BigInt显示功能

时间:2013-02-03 20:28:40

标签: c++ bigint

我正在为BigInt类实现一个代码,我在显示对象时遇到了麻烦..我不确定我做错了什么,但我的结果是相反的。请帮忙!

BigInt.h

#include <iostream>
using namespace std;
using std::cout;

#ifndef BIGINT_H
#define BIGINT_H

class BigInt
{
//input and output operators
    friend istream & operator >> (istream &, BigInt &);
    friend ostream & operator << (ostream &, const BigInt &);

public:
    BigInt(); //default constructor
    BigInt(int); //initializes array with user-specified numbers

    BigInt operator + (BigInt &);

    void display(); //prints array

private:
   static const int CAPACITY = 40;
   int Digits[CAPACITY]; //stores all digits
};
#endif

BigInt.cpp

#include <iostream>
#include "BigInt.h"
using std::cout;

BigInt::BigInt()
{
   for (int i = 0; i < CAPACITY; i++)
      Digits[i] = 0;
}

BigInt::BigInt(int InitNum)
{
   //Inputs the individual numbers given to BigInt into the Digits array's elements
   for(int i = 0; i < CAPACITY; i++)
   {
      if(InitNum > 0)
      {
         Digits[i] = InitNum%10;
         InitNum = InitNum/10;
      }
      else
         Digits[i]=0;
   }
}

//------------------------------------------------------------------
BigInt BigInt::operator +(BigInt & a)
{
   for(int i = CAPACITY - 1; i >= CAPACITY; i--)
      Digits[i]+=a.Digits[i];
}

//-----------------------------------------------------------------
ostream & operator << (ostream & cout, const BigInt& a)
{
   for(int i=0; i< a.CAPACITY ; i++)
      cout << a.Digits[i];
   return cout;
}

istream & operator >> (istream & cin,  BigInt& a)
{
   for(int i = 0; i < a.CAPACITY; ++i)
      cin >> a.Digits[i];

   return cin;
}

//---------------------------------------------------------------
void BigInt::display()
{
   for(int i = 0; i< CAPACITY; i++)
      cout << Digits[i];

   cout << "\n";
}

Main.cpp的

#include <iostream>
#include <cstdlib>
#include <fstream>
#include "BigInt.h"

int main()
{
   BigInt object1(45756369);
   BigInt object2(47435892);

   object1.display();
   object2.display();

   BigInt object3 = object1 + object2;

   cout << object3;

   return 0;
}

谢谢! 另外,操作员+功能是否正常?

1 个答案:

答案 0 :(得分:0)

你将数字反向放在构造函数中Num%10会给你最后一位数字......你需要在完成填充构造函数后反转你的数组。