2013-02-03 57 views
1

我正在實施一個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; 
} 

謝謝! 另外,運營商+功能是否正常?

回答

0

您在構造函數中反向放置數字Num%10會給出最後一位數字......您需要在完成填充構造函數後反轉數組。