কম্পিউটার টিউটোরিয়াল

C++-এ অ্যারে থেকে সর্বোচ্চ 유리 সংখ্যা (Maximum rational number from an array)

এই সমস্যায় একটি ২D অ্যারে দেওয়া আছে যাতে প্রতিটি সারিতে একটি 유리 সংখ্যা (ভগ্নাংশ) আছে। আমাদের C++-এ অ্যারেটি থেকে সর্বোচ্চ 유리 সংখ্যা বের করার প্রোগ্রাম লিখতে হবে।

সমস্যার বিবরণ - ২D অ্যারে [n][2] আকারের। প্রতিটি সারিতে দুটি পূর্ণসংখ্যা a এবং b থাকে যা a/b বোঝায়। এই সব 유리 সংখ্যার মধ্যবর্তী সর্বোচ্চটি খুঁজে বের করতে হবে।

উদাহরণ:

ইনপুট

rat[][] = {{3, 2}, {5, 7}, {1, 9}, {11, 4}}

আউটপুট

11 4

ব্যাখ্যা

৩/২, ৫/৭, ১/৯, ১১/৪ মধ্যবর্তী সর্বোচ্চ হল ১১/৪।

সমাধানের পদ্ধতি

সরাসরি ভগ্নাংশের মান তুলনা করতে ফ্লোটিং পয়েন্ট প্রিসিশন ত্রুটি হতে পারে। তাই সব হরের LCM বের করে সব ভগ্নাংশকে সাধারণ হরে আনা হবে। তারপর লবগুলো তুলনা করলে সর্বোচ্চটি সহজে বের করা যাবে।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
const int n = 4;
int findMaxRatNum(int ratNum[n][2]){
    int numArray[n];
    int LCM = 1;
    int mavVal = 0, index = 0;
    for (int i = 0; i < n; i++)
        LCM = (LCM * ratNum[i][1]) / __gcd(LCM, ratNum[i][1]);
    for (int i = 0; i < n; i++) {
        numArray[i] = (ratNum[i][0]) * (LCM / ratNum[i][1]);
        if (mavVal < numArray[i]) {
            mavVal = numArray[i];
            index = i;
        }
    }
    return index;
}
int main(){
    int ratNum[n][2] = {{3, 2},{5, 7},{1, 9},{11, 4}};
    int i = findMaxRatNum(ratNum);
    cout<<"The maximum rational number from an array is "<

আউটপুট

The maximum rational number from an array is 11/4
  1. অ্যারেতে এমন মৌলিক সংখ্যা K খুঁজে বের করা যাতে (A[i] % K) সর্বোচ্চ হয় C++-তে

  2. C++-এ সর্টেড অ্যারেতে সবচেয়ে কাছাকাছি সংখ্যা (Closest Number) খুঁজে বের করা

  3. C++-এ 유리 সংখ্যার LCM খুঁজে বের করা

  4. C++-এ ফাংশন থেকে অ্যারে রিটার্ন কীভাবে করবেন?