istream &operator>>(istream &is, rational &r)
        {
        long n, d;
        char c = 0;
        if (is >> c && c == '(')
            {
            is >> n >> c;
            if (c == '/')
                is >> d >> c;
            if (c != '(')
                {
                is.putback(c);
                is.clear(ios::failbit);
                }
            }
        else
            {
            is.putback(c);
            is >> n;
            d = 1;
            }
        if (is)
            r = rational(n, d);  
        return is;
        }
