Я реализую код для класса 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;
}
Спасибо!
Кроме того, оператор + функция в порядке?
Вы переводите свои цифры в обратном порядке в конструкторе. Num% 10 даст вам последнюю цифру … Вам нужно изменить массив, когда вы закончите заполнять его в конструкторе.
Других решений пока нет …