istream &operator> >(istream &is, rational &r)
{
char lp, slash, rp;
long n, d;
is >> lp >> n >> slash >> d >> rp;
if (is && lp = = '(' && slash == '/' && rp == ')')
r = rational(n, d);
else if(is.good())
//indicate a failure
return is;
}