Int50.h
#include <iostream>
using namespace std;
class Int50
{
private:
static const int SZ = 50;
short Ints[SZ];
unsigned char DataSize;
public:
Int50();
Int50(const string &);
Int50 operator+(const Int50 &I2) const;
Int50 operator-(const Int50 &I2) const;
Int50 operator*(const Int50 &I2) const;
Int50 operator/(const Int50 &I2) const;
friend ostream& operator<<(ostream& out, Int50& I);
friend istream& operator>>(istream& in, Int50& I);
};
Int50.cpp
#include <iostream>
#include <string>
#include "Int50.h"
using namespace std;
Int50 Int50::operator+(const Int50 &I2) const
{
Int50 Temp;
int Carry = 0;
for(int i = SZ-1; i >= 0; i--)
{
Temp.Ints[i] = Ints[i] + I2.Ints[i] + Carry;
if (Temp.Ints[i] > 9)
{
Carry = 1;
Temp.Ints[i] -= 10;
}
else
Carry = 0;
}
if(Ints > I2.Ints)
Temp.DataSize = DataSize;
else
Temp.DataSize = I2.DataSize;
return Temp;
}
Int50 Int50::operator-(const Int50 &I2) const
{
Int50 Temp;
int Borrow = 0;
int Added = 0;
for(int i = SZ-1; i > 0; i--)
{
Temp.Ints[i] = (Ints[i] + Added) - I2.Ints[i] - Borrow;
if(Ints[i] < I2.Ints[i])
{
Added = 10;
Borrow = 1;
}
else
{
Added = 0;
Borrow = 0;
}
}
if(Ints > I2.Ints)
Temp.DataSize = DataSize;
else
Temp.DataSize = I2.DataSize;
return Temp;
}
istream& operator>>(istream& in, Int50& I)
{
string s;
cout << "Enter a value: ";
in >> s;
I = Int50(s);
return in;
}
ostream& operator<<(ostream& out, Int50& I)
{
if (I.DataSize == 0)
out << '0';
else
{
for(int i = 0; i < I.DataSize; i++)
out << I.Ints[i];
}
return out;
}
Int50::Int50()
{
for(int i = 0; i < SZ; i++)
Ints[i] = 0;
}
Int50::Int50(const string &s)
{
int sz = s.size();
if (sz == 0 || sz > 50)
DataSize = 0;
else
{
DataSize = sz;
int i;
short n;
for(i = 0; i < sz; i++)
{
n = s[i] - '0';
if (n < 0||n > 9)
{
DataSize = 0;
break;
}
Ints[i] = n;
}
for(; i < SZ; i++)
{
Ints[i] = 0;
}
}
}
Int50 Driver.cpp
#include <iostream>
#include "Int50.h"
using namespace std;
int main()
{
Int50 I1;
cin >> I1;
cout << "I1: " << I1 << endl;
Int50 I2;
cin >> I2;
cout << "I2: " << I2 << endl;
Int50 I3 = I1 + I2;
cout << I1 << "+" << I2 << "=" << I3 << endl;
return 0;
}
This post has been edited by AverageAsian: 27 January 2011 - 10:12 AM

New Topic/Question
Reply



MultiQuote




|