Sanee Reimoo Sanee Reimoo - 23 days ago 7
C Question

reducing a fraction in c

#include <stdio.h>
#include <stdlib.h>
int main()
{
system("color f0");
int a,b,c,d,e,f,g,h,z;
printf("First numerator:");
scanf("%d",&a);
printf("First denominator:");
scanf("%d",&b);
printf("Second numerator:");
scanf("%d",&c);
printf("Second denominator:");
scanf("%d",&d);
a=a*d;
c=c*b;
e=a+c;
f=b*d;

printf("Simple form:%d/%d\n",e,f);
return 0;
}


This is my code i want to reduce that simple fraction to the lowest possible but without using maths library

Answer

You did some weird things with your code:

First, you ask a user for two nominators and two denominators.

So your lines

printf("Second numerator:");
scanf("%d",&c);
printf("Second denominator:");
scanf("%d",&d);

are superfluous and you may delete them.

Second, you lines

a=a*d;
c=c*b;
e=a+c;
f=b*d;

are horrible - a reader (and you) will be lost in your amount 1-letter names.

So why don't give a variable for a nominator the name nominator and for a variable for a denominator the denominator? And so on?

So replace your whole code with this one:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int numerator, denominator, smaller, i;

    system("color f0");

    printf("Numerator  : ");
    scanf("%d",&numerator);

    printf("Denominator: ");
    scanf("%d",&denominator);

    printf("\nOriginal fraction: %d/%d\n", numerator, denominator);

    // Method: We get the smaller number from numerator and denominator
    // and will try all numbers from it decreasing by 1 for common divisor

    smaller = numerator < denominator ? numerator : denominator;

    for (i = smaller; i > 1; --i)
        if (numerator % i == 0 && denominator % i ==0)
        {
            numerator   /= i;
            denominator /= i;
            break;
        }

    printf("Reduced fraction : %d/%d\n", numerator, denominator);
    return 0;
}