#include using namespace std; #include "digit.h" #include "digitdata.h" Digit::Digit() { setdigit(0); } Digit::Digit(int n) { setdigit(n); } Digit::~Digit() { } int Digit::getvalue() { return value; } void Digit::setdigit(int n) { setvalue(n); setgrid(n); } void Digit::operator= (int n) { setdigit(n); } void Digit::operator+= (Digit d) { *this = *this + d; } void Digit::operator-= (Digit d) { *this = *this - d; } Digit Digit::operator+ (Digit d) { Digit res; int n; n = value + d.value; if(n >= 10) { n -= 10; cout << "(warning: addition overflow)\n"; } res = n; return res; } Digit Digit::operator- (Digit d) { Digit res; int n; n = value - d.value; if(n < 0) { n = - n; cout << "(warning: negative result)\n"; } res = n; return res; } bool Digit::operator==(Digit d) { return (getvalue() == d.getvalue()); } bool Digit::operator!=(Digit d) { return (getvalue() != d.getvalue()); } bool Digit::operator<=(Digit d) { return (getvalue() <= d.getvalue()); } bool Digit::operator<(Digit d) { return (getvalue() < d.getvalue()); } bool Digit::operator>=(Digit d) { return (getvalue() >= d.getvalue()); } bool Digit::operator>(Digit d) { return (getvalue() > d.getvalue()); } Digit Digit::operator++() { value++; if(value == 10) value = 0; setdigit(value); return *this; } Digit Digit::operator--() { if(value == 0) value = 9; else value--; setdigit(value); return *this; } void Digit::setvalue(int n) { value = n; } void Digit::setgrid(int n) { for(int i = 0; i < ROWS; ++i) for(int j = 0; j < COLS ; ++j) grid[i][j] = number[n][i][j]; } void Digit::display() { cout << *this; } void Digit::showcell(int i, int j) { cout << grid[i][j]; } bool Digit::isvalid() { return (value >=0 && value <=9); } ostream& operator<< (ostream& s, Digit& d) { s << endl; s << "\t+--------+\n"; for(int i = 0; i < ROWS; ++i) { s << "\t|"; for(int j = 0; j < COLS ; ++j) d.showcell(i, j); s << "|" << endl; } s << "\t+--------+\n"; s << endl; return s; } istream& operator>> (istream& s, Digit& d) { int n; cout << "Enter an integer (0-9): "; s >> n; d = n; return s; }