# Maximum rational number (or fraction) from an array

Given rational numbers, the task is to find the maximum rational number.

Examples:

Input : ra_num = {{1, 2}, {2, 3}, {3, 4}, {4, 5}}; Output : 4 5 Input : ra_num = {{10, 12}, {12, 33}, {33, 14}, {14, 15}}; Output : 33 14

A simple solution is to find float values and compare the float values. The float computations may cause precision errors. We can avoid them using below approach.

Say number’s are 1/2, 2/3, 3/4, 4/5

First take an LCM of (2, 3, 4, 5) which is the denominator of all rational number. so the LCM of this is 60, then divide with all denominator’s and multiple with all numerator’s, so the value of numerator’s are (30, 40, 45, 48)

Then find the max between these rational number’s. so here the last numerator is max then print last rational number. which is 4/5.

`// CPP program to find the maximum rational ` `// number in an array. ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `struct` `Rational { ` ` ` ` ` `// numerator and Denominator ` ` ` `int` `nume, deno; ` `}; ` ` ` `// here we find the Denominator LCM ` `int` `lcmOfDenominator(vector<Rational> ra_num) ` `{ ` ` ` `// get the first Denominator as lcm ` ` ` `int` `lcm = ra_num[0].deno; ` ` ` `int` `i; ` ` ` ` ` `// find the lcm of all relational ` ` ` `// number Denominator ` ` ` `for` `(i = 1; i < ra_num.size(); i++) ` ` ` `lcm = (lcm * (ra_num[i].deno)) / ` ` ` `__gcd(lcm, ra_num[i].deno); ` ` ` ` ` ` ` `// return the lcm ` ` ` `return` `lcm; ` `} ` ` ` `int` `maxRational(vector<Rational> ra_num) ` `{ ` ` ` `// take a temp array for find ` ` ` `// maximum numerator after multiple ` ` ` `int` `temp[ra_num.size()] = { 0 }; ` ` ` ` ` `// get here the lcm of all rational ` ` ` `//number denominator ` ` ` `int` `lcm = lcmOfDenominator(ra_num); ` ` ` ` ` `// take maximum for get maximum index ` ` ` `int` `maximum = 0; ` ` ` `int` `maximumind = 0; ` ` ` ` ` `// find the index which contain maximum value ` ` ` `for` `(` `int` `i = 0; i < ra_num.size(); i++) { ` ` ` ` ` `// divide lcm with denominator ` ` ` `// and multiple with numerator ` ` ` `temp[i] = (ra_num[i].nume) * ` ` ` `(lcm / ra_num[i].deno); ` ` ` ` ` `// get the maximum numerator ` ` ` `if` `(maximum < temp[i]) { ` ` ` `maximum = temp[i]; ` ` ` `maximumind = i; ` ` ` `} ` ` ` `} ` ` ` ` ` `// return index which contain ` ` ` `// maximum rational number ` ` ` `return` `maximumind; ` `} ` ` ` `int` `main() ` `{ ` ` ` `// given rational number ` ` ` `vector<Rational> ra_num = { { 1, 2 }, ` ` ` `{ 2, 3 }, ` ` ` `{ 3, 4 }, ` ` ` `{ 4, 5 } }; ` ` ` ` ` `// get the index which contain maximum value ` ` ` `int` `index_max = maxRational(ra_num); ` ` ` ` ` `// print numerator and denominator ` ` ` `cout << ra_num[index_max].nume << ` `" "` ` ` `<< ra_num[index_max].deno << ` `"\n"` `; ` `} ` |

*chevron_right*

*filter_none*

Output:

4 5

## Recommended Posts:

- as_integer_ratio() in Python for reduced fraction of a given rational
- Find ΔX which is added to numerator and denominator both of fraction (a/b) to convert it to another fraction (c/d)
- HCF of array of fractions (or rational numbers)
- Expressing a fraction as a natural number under modulo 'm'
- Convert decimal fraction to binary number
- Largest proper fraction with sum of numerator and denominator equal to a given number
- Find prime number K in an array such that (A[i] % K) is maximum
- Find a number that divides maximum array elements
- Minimum and Maximum element of an array which is divisible by a given number k
- Find integers that divides maximum number of elements of the array
- Sum of elements in 1st array such that number of elements less than or equal to them in 2nd array is maximum
- Find max of two Rational numbers
- Find LCM of rational numbers
- N-th term of George Cantor set of rational numbers
- Algorithm to generate positive rational numbers

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.