小数化分数2

#include <iostream>
using namespace std;
int f(int u,int v)
{
    while(u%v)
    {
      int w=u%v;
      u=v;
      v=w;
    }
    return v;
}
int main()
{
    int t;
    while(cin>>t)
    {
        while(t--)
        {
            char a[15];
            cin>>a;
            int p=0,q=0,t=0,x=0,y,k=1,l=1,max;
            for(int i=2;a[i]!='\0';i++)
            {
                if(!t && a[i]!='(') {p++;x*=10;x+=a[i]-'0';}
                if(t && a[i]!=')') {q++;y*=10;y+=a[i]-'0';}
                if(a[i]=='(') {t=1;y=x;q=p;}
            }
            if(!q)
            {
                while(p--)
                    k*=10;
                max=f(x,k);
                x/=max;
                k/=max;
                cout<<x<<'/'<<k<<endl;
            }
            else
            {
                int m=y-x;
                while(p--)
                    k*=10;
                while(q--)
                    l*=10;
                int n=l-k;
                max=f(m,n);
                m/=max;
                n/=max;
                cout<<m<<'/'<<n<<endl;
            }
        }
    }
    return 0;
}

 

posted @ 2013-09-19 15:37  Destino74  阅读(62)  评论(0编辑  收藏  举报