Hey guys having some trouble with my program was wondering if anyone can shed some light.
Operator Overload
I'm suppose to overload the addition,subtraction,division, multiplication, >, <, >>, <<
The client file will be reading in a data file that has values on it
Errors that I'm receiving
Code
rational.h: In function 'std::istream& operator>>(std::istream&, int&)':
rational.h:121: warning: control reaches end of non-void function
rational.h: In function 'int Rational(int, int)':
rational.h:22: warning: control reaches end of non-void function
This is the H File
Code
using namespace std;
class Rational {
public:
Rational( int pn = 1, int pd = 1 );
Rational& operator+(Rational& robj);
Rational& operator-(Rational& robj);
Rational& operator*(Rational& robj);
Rational& operator/(Rational& robj);
bool operator>(Rational& robj);
bool operator<(Rational& robj);
friend ostream& operator<<(ostream& output, Rational& robj);
friend istream& operator>>(istream& input, Rational& robj);
private:
int numerator;
int denominator;
void reduce( );
};
This is the CPP file
Code
Rational::Rational( int pn, int pd )
{
if (pd)
{
numerator = pn;
denominator = pd;
}
else
{
numerator = 1;
denominator = 1;
}
}
void Rational::reduce( )
{
int largest, gcd = 1; // greatest common divisor;
largest = ( numerator > denominator ) ? numerator: denominator;
for ( int loop = 2; loop <= largest; ++loop )
if ( numerator % loop == 0 && denominator % loop == 0 )
gcd = loop;
numerator /= gcd;
denominator /= gcd;
}
Rational Rational::operator+(Rational& robj)
{
Rational Temp=*this;
Temp.pn = (numerator * robj.denominator) + (robj.numerator * denominator);
Temp.pd = denominator * robj.denominator;
return Temp;
}
Rational Rational::operator-(Rational& robj)
{
Rational Temp=*this;
Temp.pn = (numerator * robj.denominator) - (robj.numerator * denominator);
Temp.pd = denominator * robj.denominator;
return Temp;
}
Rational Rational::operator*(Rational& robj)
{
Rational Temp=*this;
Temp.pn = numerator * robj.numerator;
Temp.pd = denominator * robj.denominator;
return Temp;
}
Rational Rational::operator/(Rational& FractB)
{
Rational Temp=*this;
Temp.pn = numerator * robj.denominator;
Temp.pd = denominator * robj.numerator;
return Temp;
}
bool Rational::operator>(Rational& robj)
{
if ( pn/pd > robj.pn/robj.pd)
return true;
else
return false;
}
bool Rational::operator<(Rational& robj)
{
if ( pn/pd < robj.pn/robj.pd)
return true;
else
return false;
}
ostream& operator<<(ostream& output, Rational& robj)
{
output<< robj.numerator << '/' << robj.denominator;
return output;
}
istream& operator>>(istream& input, Rational& robj)
{
input >> robj.numerator;
cin.ignore();
input >> robj.denominator;
cin.ignore();
return input;
}