# Ratio manipulation in C++ with examples

Hello everyone, in this tutorial, we will be studying ratio manipulation in C++. C++ has a header file separately to deal with operations related to fractions. There are many template aliases for ratio manipulation.

## Ratio manipulation in C++

We can perform addition, subtraction, multiplication, and division operation on fractions using <ratio> header file. Let’s discuss these operations one by one.

### Adding ratios

In order to add two ratios, we use **ratio_add** template alias as you can see in the below program. The output given by this is in the simplest form. It returns two values *num* and *den* respectively. *num *represents the numerator and *den* represents the denominator. Have a look at this code.

#include <iostream> #include <ratio> using namespace std; int main() { typedef ratio<1, 4> r1; typedef ratio<1, 8> r2; typedef ratio_add<r1, r2> r3; cout << "Result of 1/4 + 1/8 is: " << r3::num << "/" <<r3::den; return 0; }

The output of the above program:

Result of 1/4 + 1/8 is: 3/8

### Subtracting ratios

As we used ratio_add template alias for the addition of two fractions, similarly we can use **ratio_subtract **subtract one ratio from another. Again the output is in the simplest form. The return values are *num* and *den* respectively.

See the below code.

#include <iostream> #include <ratio> using namespace std; int main() { typedef ratio<1, 4> r1; typedef ratio<1, 8> r2; typedef ratio_subtract<r1, r2> r3; cout << "Result of 1/4 - 1/8 is: " << r3::num << "/" <<r3::den; return 0; }

Output:

Result of 1/4 - 1/8 is: 1/8

### Multiplying ratios

To get the multiplication of two fractions or ratios we can use ratio_multiply. The below code explains the working of this template alias. The return values are the same as in the above two operations.

#include <iostream> #include <ratio> using namespace std; int main() { typedef ratio<1, 4> r1; typedef ratio<1, 8> r2; typedef ratio_multiply<r1, r2> r3; cout << "Result of 1/4 * 1/8 is: " << r3::num << "/" <<r3::den; return 0; }

Output:

Result of 1/4 * 1/8 is: 1/32

### Division of ratios

To divide a ratio by another ratio we have to use ratio_divide template alias. It returns the same values as the above and the result is in the simplest form. See the code.

#include <iostream> #include <ratio> using namespace std; int main() { typedef ratio<1, 4> r1; typedef ratio<1, 8> r2; typedef ratio_divide<r1, r2> r3; cout << "Result of (1/4) / (1/8) is: " << r3::num << "/" <<r3::den; return 0; }

Output:

Result of (1/4) / (1/8) is: 2/1

Thank you. Hope it was helpful.

Also read: Fraction Module in Python

## Leave a Reply