C ++中数组的最大有理数(或分数)
在本教程中,我们将讨论一个从数组中找到最大有理数(或分数)的程序。
为此,我们将提供一个包含有理数的数组。我们的任务是比较有理数的值并在其中找到最大值。
示例
#include <bits/stdc++.h>
using namespace std;
struct Rational {
//numerator and denominator
int nume, deno;
};
int lcmOfDenominator(vector<Rational> ra_num) {
int lcm = ra_num[0].deno;
int i;
for (i = 1; i < ra_num.size(); i++)
lcm = (lcm * (ra_num[i].deno)) /
__gcd(lcm, ra_num[i].deno);
return lcm;
}
int maxRational(vector<Rational> ra_num) {
int temp[ra_num.size()] = { 0 };
int lcm = lcmOfDenominator(ra_num);
//getting the maximum value index
int maximum = 0;
int maximumind = 0;
for (int i = 0; i < ra_num.size(); i++) {
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 maximumind;
}
int main() {
vector<Rational> ra_num = { { 1, 2 },{ 2, 3 },{ 3, 4 },{ 4, 5 } };
int index_max = maxRational(ra_num);
cout << ra_num[index_max].nume << " "<< ra_num[index_max].deno << "\n";
}输出结果
4 5