1034 有理数四则运算 (20 分)

2019-05-19  本文已影响0人  79d12e22ec53

#include<stdio.h>

int gong(long long a,long long b)

{

    long long r,min,max;

    min=(a>b)?b:a;

    max=(a>b)?a:b;

    r=max%min;

    while(r)

    {

        max=min;

        min=r;

        r=max%min;

    }

    return min;

}

void print(long long a,long long b)

{

    long long flag=0,c,d,e;

    if(a<0){

        a=-a;

        flag=1;

    }

    if(a==0) printf("0");

    else{

        e=gong(a,b);

        a/=e;

        b/=e;

        c=a/b;

        d=a%b;

        if(flag==0){

            if(d==0) printf("%lld",c);

            else{

                if(c==0) printf("%lld/%lld",a,b);

                else printf("%lld %lld/%lld",c,d,b);

            }

        }

        else{

            if(d==0) printf("(-%lld)",c);

            else{

                if(c==0) printf("(-%lld/%lld)",a,b);

                else printf("(-%lld %lld/%lld)",c,d,b);

            }

        }

    }

}

void add(long long a1,long long b1,long long a2,long long b2)

{

    print(a1,b1);

    printf(" + ");

    print(a2,b2);

    printf(" = ");

    print(a1*b2+a2*b1,b1*b2);

    printf("\n");

}

void minus(long long a1,long long b1,long long a2,long long b2)

{

    print(a1,b1);

    printf(" - ");

    print(a2,b2);

    printf(" = ");

    print(a1*b2-a2*b1,b1*b2);

    printf("\n");

}

void muilt(long long a1,long long b1,long long a2,long long b2)

{

    print(a1,b1);

    printf(" * ");

    print(a2,b2);

    printf(" = ");

    print(a1*a2,b1*b2);

    printf("\n");

}

void divide(long long a1,long long b1,long long a2,long long b2)

{

    print(a1,b1);

    printf(" / ");

    print(a2,b2);

    printf(" = ");

    if(a2==0) printf("Inf\n");

    else{

        if(a2<0){

            a2=-a2;

            a1=-a1;

        }

        print(a1*b2,b1*a2);

        printf("\n");

    }

}

int main()

{

    long long a1,b1,a2,b2;

    while(~scanf("%lld/%lld %lld/%lld",&a1,&b1,&a2,&b2))

    {

        add(a1,b1,a2,b2);

        minus(a1,b1,a2,b2);

        muilt(a1,b1,a2,b2);

        divide(a1,b1,a2,b2);

    }

    return 0;

}

上一篇 下一篇

猜你喜欢

热点阅读