Program for Addition of Two Fractions in C
Addition of Two Fractions
The addition of two fractions involves finding a common denominator and then adding the numerators. The result is then simplified if necessary.
We will explore three methods to perform fraction addition using C programming.
Method 1: Using Basic Arithmetic
This method directly computes the sum using the Least Common Denominator (LCD).
#include <stdio.h>
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
void addFractions(int num1, int den1, int num2, int den2) {
int common_den = den1 * den2;
int common_num = (num1 * den2) + (num2 * den1);
int divisor = gcd(common_num, common_den);
printf("Sum: %d/%d\n", common_num / divisor, common_den / divisor);
}
int main() {
int num1 = 1, den1 = 2, num2 = 1, den2 = 3;
addFractions(num1, den1, num2, den2);
return 0;
}
Output: Sum: 5/6
Method 2: Using Structs
Using structures provides better organization for fraction operations.
#include <stdio.h>
typedef struct {
int numerator;
int denominator;
} Fraction;
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
Fraction addFractions(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = (f1.numerator * f2.denominator) + (f2.numerator * f1.denominator);
result.denominator = f1.denominator * f2.denominator;
int divisor = gcd(result.numerator, result.denominator);
result.numerator /= divisor;
result.denominator /= divisor;
return result;
}
int main() {
Fraction f1 = {1, 2}, f2 = {1, 3}, sum;
sum = addFractions(f1, f2);
printf("Sum: %d/%d\n", sum.numerator, sum.denominator);
return 0;
}
Output: Sum: 5/6
Method 3: Using Recursion
This recursive method finds the sum by simplifying at each step.
#include <stdio.h>
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
void addFractionsRecursive(int num1, int den1, int num2, int den2) {
if (den1 == den2) {
printf("Sum: %d/%d\n", num1 + num2, den1);
return;
}
int common_den = den1 * den2;
int common_num = (num1 * den2) + (num2 * den1);
int divisor = gcd(common_num, common_den);
addFractionsRecursive(common_num / divisor, common_den / divisor, 0, 1);
}
int main() {
int num1 = 1, den1 = 2, num2 = 1, den2 = 3;
addFractionsRecursive(num1, den1, num2, den2);
return 0;
}
Output: Sum: 5/6