Question

I am implementing a code for BigInt class and I am having troubles displaying the object.. I am not sure what I am doing wrong but my result is reversed. Please help!

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;
}

Thanks! Also, is the operator+ function alright?

Était-ce utile?

La solution

You are putting your digits in reverse in the constructor Num % 10 will give you the last digit... You need to reverse your array after you finish filling it in the constructor.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top