편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.06.02

    c언어 구조체 분수 합 질문입니다.


    #include<stdio.h>
    
    struct Fraction
    {
        int n1;
        int m1;
    };
    struct Fraction addFraction(struct Fraction f1, struct Fraction f2);
    void trim(struct Fraction x);
    int main()
    {
        struct Fraction f1, f2, f3;
    
        while(1)
        {scanf("%lf %lf %lf %lf", &f1.n1, &f1.m1, &f2.n1, &f2.m1);}
    
        trim(f3 = addFraction(f1, f2));
        printf("%d/%d", f3.n1, f3.m1);
    }
    
    struct Fraction addFraction(struct Fraction f1, struct Fraction f2)
    {
        struct Fraction f3;
        f3.m1 = f1.m1 * f2.m1;
        f3.n1 = (f2.m1 * f1.n1) + (f1.m1 * f2.n1);
    
        return f3;
    }
    
    void trim(struct Fraction x)
    {
        int down = x.n1;
        int up = x.m1;
        int com, i;
        if (x.n1 > x.m1)
        {
            down = x.m1;
            up = x.n1;
        }
        for (i = 1; i <= down; i++)
            if ((down % i) == 0 && (up % i) == 0)
                com = i;
    
        x.n1 /= com;
        x.m1 /= com;
    }
    
    

    분모가 0인 분수가 입력될 때까지 분수들을 입력 받아 마지막 분수를 제외한 분수들 의 합을 출력하는 프로그램을 만들고 싶은데 어디를 수정해야 할지 어렵습니다.

    수정 부탁드립니다 감사합니다.

  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.06.02

    c언어 구조체 분수 합 질문입니다.


    #include<stdio.h>
    
    struct Fraction
    {
        int n1;
        int m1;
    };
    struct Fraction addFraction(struct Fraction f1, struct Fraction f2);
    void trim(struct Fraction x);
    int main()
    {
        struct Fraction f1, f2, f3;
    
        while(1)
        {scanf("%lf %lf %lf %lf", &f1.n1, &f1.m1, &f2.n1, &f2.m1);}
    
        trim(f3 = addFraction(f1, f2));
        printf("%d/%d", f3.n1, f3.m1);
    }
    
    struct Fraction addFraction(struct Fraction f1, struct Fraction f2)
    {
        struct Fraction f3;
        f3.m1 = f1.m1 * f2.m1;
        f3.n1 = (f2.m1 * f1.n1) + (f1.m1 * f2.n1);
    
        return f3;
    }
    
    void trim(struct Fraction x)
    {
        int down = x.n1;
        int up = x.m1;
        int com, i;
        if (x.n1 > x.m1)
        {
            down = x.m1;
            up = x.n1;
        }
        for (i = 1; i <= down; i++)
            if ((down % i) == 0 && (up % i) == 0)
                com = i;
    
        x.n1 /= com;
        x.m1 /= com;
    }
    
    

    분모가 0인 분수가 입력될 때까지 분수들을 입력 받아 마지막 분수를 제외한 분수들 의 합을 출력하는 프로그램을 만들고 싶은데 어디를 수정해야 할지 어렵습니다 ㅜㅜ

    수정 부탁드립니다 감사합니다.