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 <iostream>
using namespace std;
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);
cout << "Sum: " << common_num / divisor << "/" << common_den / divisor << endl;
}
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 <iostream>
using namespace std;
struct Fraction {
int numerator;
int denominator;
};
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);
cout << "Sum: " << sum.numerator << "/" << sum.denominator << endl;
return 0;
}
Output: Sum: 5/6
Method 3: Using Recursion
This recursive method finds the sum by simplifying at each step.
#include <iostream>
using namespace std;
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) {
cout << "Sum: " << num1 + num2 << "/" << den1 << endl;
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