In the function for overloading the >> operator I am getting this error:
84`rationalize_number' undeclared (first use this function)
this is the function:
istream& operator >>(istream& in, Rational& rational1)
{
char tempChar;
int numerator = rational1.numerator;
int denominator = rational1.denominator;
in >> tempChar;
if(tempChar == '(')
{
in >> rational1.numerator
>> tempChar;
}
if(tempChar == ',')
{
in >> rational1.denominator
>> tempChar;
}
rationalize_number(numerator,denominator);
cout << rational1;
}
Here is the whole program:
#include <iostream>
#include <cstdlib>
using namespace std;
class Rational
{
public:
Rational();
Rational(int numerator1);
Rational(int numerator1, int denominator1);
friend Rational operator -(Rational rational1, Rational rational2);
friend Rational operator +(Rational rational1, Rational rational2);
friend Rational operator /(Rational rational1, Rational rational2);
friend Rational operator *(Rational rational1, Rational rational2);
friend bool operator <(Rational rational1, Rational rational2);
friend bool operator >(Rational rational1, Rational rational2);
friend bool operator ==(Rational rational1, Rational rational2);
friend bool operator >=(Rational rational1, Rational rational2);
friend ostream& operator <<(ostream& out,Rational& rational1);
friend istream& operator >>(istream& in, Rational& rational1);
private:
int numerator;
int denominator;
void rationalize_number(int& numerator, int& denominator);
};
int main()
{
Rational test1(24,6), test2(24);
Rational test4;
cout << test1<< endl;
cout << test2<< endl;
cout << test4<<endl;
cout << "testing input function" << endl;
cin >> test4;
cout << endl;
cout << test4 << endl;
system("pause");
}
Rational::Rational() : numerator(0), denominator(1)
{
//empty body
}
Rational::Rational(int numerator1)
{
numerator = abs(numerator1);
denominator = 1;
}
Rational::Rational(int numerator1, int denominator1)
{
rationalize_number(numerator1,denominator1);
numerator = numerator1;
denominator = denominator1;
}
ostream& operator <<(ostream& out,Rational& rational1)
{
out << rational1.numerator <<"/"<<rational1.denominator;
return out;
}
istream& operator >>(istream& in, Rational& rational1)
{
char tempChar;
int numerator = rational1.numerator;
int denominator = rational1.denominator;
in >> tempChar;
if(tempChar == '(')
{
in >> rational1.numerator
>> tempChar;
}
if(tempChar == ',')
{
in >> rational1.denominator
>> tempChar;
}
rationalize_number(numerator,denominator);
cout << rational1;
}
void Rational::rationalize_number(int& numerator, int& denominator)
{
int countDenom;
int countNum;
//cout << numerator<< "/" << denominator << endl;
if(numerator >= denominator)
{
for (countDenom = denominator; countDenom >= 2; countDenom--)
{ //cout << "in for" <<numerator<< "/" << denominator << endl;
//cout << "loop #" << countDenom << endl;
if(denominator%countDenom == 0 && numerator%countDenom == 0)
{
//cout << "if:"<<endl;
//cout << numerator<< "/" << denominator << endl;
denominator = denominator/countDenom;
numerator = numerator/countDenom;
}
//else
//{
// ;
//}
}
}
else if(denominator > numerator)
{
for (countNum = numerator; countNum >= 2; countNum--)
{
if(denominator%countNum == 0 && numerator%countNum == 0)
{
denominator = denominator/countNum;
numerator = numerator/countNum;
}
//else
//{
// ;
//}
}
}
}*