poj3979

来源:互联网 发布:东方财富网 mac 编辑:程序博客网 时间:2024/06/05 23:40
#include<iostream>
#include<string>




#define SIZE 4
 
using namespace std;




int  gcd( int m,int n )
{
    m = (m>=0)?m:(-1*m); 
    n = (n>=0)?n:(-1*n);
    int temp;
    if (m<n){
        temp = m;
        m = n;
        n = temp;
     }
     if (m%n == 0){
          return n;
     }
     else{
          return gcd (n,m%n) ;
     }



int main(void){
    
    int a[SIZE];
    char ch;
    string s; 
    while(cin>>s){
         for(int k=0;k<SIZE;k++)
              a[k] = 0;
        int x = 0;
        for(int i=0;i<s.length();i++){
            if(s.at(i) == '/')  {
                x++;
            }  
            if(s.at(i) == '+' || s.at(i) == '-')  {
                x++;
                ch = s.at(i);
            }
            if(s.at(i) >= '0' &&s.at(i) <= '9')  {
                a[x] = a[x]*10 + (s.at(i)-'0');
            }       
        }  
        int fenmu = a[1]*a[3];
        int fenzi = 0;
        if(ch == '-'){
            fenzi = a[0] *a[3] - a[1]*a[2]; 
        }else{
            fenzi = a[0] *a[3] + a[1]*a[2]; 
        }   
        
        //化简   
        if(fenzi == 0)
                cout<<"0"<<endl;
        else if(fenzi%fenmu==0){
            cout<<fenzi/fenmu<<endl;
        }    
         else    
         {
             int gcds = gcd(fenzi,fenmu);
             fenzi /= gcds;
             fenmu /= gcds;
            // cout<<"gcds"<<gcds<<endl;
             if(fenzi * fenmu >0){
               fenzi = (fenzi>=0)?fenzi:(-1*fenzi);
               fenmu = (fenmu>=0)?fenmu:(-1*fenmu);
                cout<<fenzi<<"/" <<fenmu<<endl;
            }  
            else if(fenzi * fenmu <0){
               fenzi = (fenzi>=0)?fenzi:(-1*fenzi);
               fenmu = (fenmu>=0)?fenmu:(-1*fenmu);
               cout<<"-"<< fenzi << "/" <<fenmu<<endl;
            }      
         }  
    }    
   // system("pause");
    return 0;
}     
0 0
原创粉丝点击