1

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

ありがとう!また、operator +関数は大丈夫ですか?

4

1 に答える 1

0

コンストラクターで数字を逆に入れています Num % 10 で最後の数字が得られます... コンストラクターでの入力が完了したら、配列を逆にする必要があります。

于 2013-02-03T20:51:45.477 に答える