Программа C, чтобы уменьшить рациональное число до его самой низкой формы, используя Структуры - PullRequest
0 голосов
/ 24 декабря 2018
    #include <stdio.h>
    typedef struct
    {
        int numerator;
        int denominator;
    }RATIONAL;
    void reduce(RATIONAL *r1,RATIONAL *r2)
    {
        int a,b,rem;
        if(r1->numerator > r1->denominator)
        {
            b=r1->denominator;
            a=r1->numerator;
        }
        else{
            a=r1->denominator;
            b=r1->numerator;
        }
        while(b!=0)
        {
            rem=a%b;
            a=b;
            b=rem;
        }
        r2->numerator/=a;
        r2->denominator/=a;
    }
    int main()
    {
        RATIONAL r1={24,12};
        RATIONAL red;
        reduce(&r1,&red);
        printf("%i/%i",red.numerator,red.denominator);
    }

Я получаю расплывчатый ответ, совсем не соответствующий желаемому результату (для справочного вывода = 350066/4).Я не понимаю, почему это происходит.Подскажите пожалуйста, что не так в этом коде.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...