Problem związany jest z przekroczeniem zakresu tablicy - zostaje wyrzucony nieobsłużony wyjątek w momencie przekroczenia zakresu. Spróbuj rozdzielić samo rozwiązanie zadania ( które dla małych liczb jest bardzo proste ) od implementacji dodawania,odejmowania i dzielenia dużych liczb.
Możesz posłużyć się poniższym schematem:
#include <iostream>
using namespace std;
class BigNumber
{
string digits;
public:
BigNumber( const string& number = "" ): digits{number} {};
friend istream& operator>>( istream& in , BigNumber& number )
{
in >> number.digits;
return in;
}
friend ostream& operator<<( ostream& out , const BigNumber& number )
{
out << number.digits;
return out;
}
friend BigNumber operator+(const BigNumber& a , const BigNumber& b )
{
BigNumber number{"0"};
// implementation of a+b
return number;
}
friend BigNumber operator-(const BigNumber& a , const BigNumber& b )
{
BigNumber number{"0"};
// implementation of a-b
return number;
}
friend BigNumber operator/(const BigNumber& a , const BigNumber& b )
{
BigNumber number{"0"};
// implementation of a/b
return number;
}
};
ostream& operator<<( ostream& out , const pair<BigNumber,BigNumber>& result )
{
out << result.first << " " << result.second;
return out;
}
pair<BigNumber,BigNumber> calculate( const BigNumber& sum , const BigNumber& diff )
{
return { (sum+diff)/"2"s , (sum-diff)/"2"s };
}
int main()
{
BigNumber sum,diff;
cin >> sum >> diff;
cout << calculate( sum , diff ) << endl;
}