Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में किसी सरणी से अधिकतम परिमेय संख्या (या भिन्न)

इस समस्या में, हमें एक 2-डी सरणी दी जाती है जिसमें परिमेय संख्याएँ होती हैं (प्रत्येक पंक्ति में एक)। हमारा कार्य C++ में किसी सरणी से अधिकतम परिमेय संख्या (या भिन्न) की गणना करने के लिए एक प्रोग्राम बनाना है।

समस्या का विवरण - 2-डी सरणी [n][2] के रूप में है। प्रत्येक पंक्ति में दो पूर्णांक मान होते हैं जो परिमेय संख्या, a/b के समीकरण में a और b के मान को दर्शाते हैं। हमें इन सभी परिमेय संख्याओं में से सबसे बड़ी संख्या ज्ञात करनी है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

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

आउटपुट

11 4

स्पष्टीकरण

में से अधिकतम संख्या

3/2 , 5/7 , 1/9 , 11/4 is 11/4.

समाधान दृष्टिकोण

समस्या को हल करने के लिए, हमें संख्याओं के मूल्यों को खोजने और फिर उनके मूल्यों की तुलना करने की आवश्यकता है। लेकिन, यह एक त्रुटि दे सकता है यदि परिशुद्धता के बीच का अंतर अधिक है, जैसे यदि हम फ्लोट का उपयोग करते हैं तो हम तर्कसंगत संख्याओं, 34.12313431123, और 34.12313431124 के बीच अंतर नहीं कर सकते हैं।

इसलिए, हम मूल्यों की तुलना करने के लिए एक अन्य विधि का उपयोग करेंगे। यह सभी हरों के एलसीएम का उपयोग कर रहा है और फिर उसके अनुसार अंशों को बदल रहा है। इसके बाद, अंशों की तुलना अधिकतम संख्या लौटाएगी।

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,

उदाहरण

#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 "<<ratNum[i][0]<<"/"<<ratNum[i][1];
}

आउटपुट

The maximum rational number from an array is 11/4

  1. सी ++ में सरणी में निकटतम संख्या पाएं

    मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। और तत्वों को क्रमबद्ध किया जाता है। हमें दिए गए पूर्णांक का निकटतम मान ज्ञात करना है। सरणी में डुप्लिकेट मान और ऋणात्मक संख्याएँ हो सकती हैं। तो अगर सरणी [2, 5, 6, 7, 8, 8, 9] की तरह है और लक्ष्य संख्या 4 है, तो निकटतम तत्व 5 है। हम दिए गए सरणी क

  1. C++ में परिमेय संख्या का LCM ज्ञात कीजिए

    यहां हम देखेंगे कि परिमेय संख्याओं का एलसीएम कैसे ज्ञात करें। हमारे पास परिमेय संख्याओं की एक सूची है। मान लीजिए सूची {2/7, 3/14, 5/3} जैसी है, तो एलसीएम 30/1 होगा। इस समस्या को हल करने के लिए, हमें सभी अंशों के एलसीएम की गणना करनी होगी, फिर सभी हरों की जीसीडी, फिर परिमेय संख्याओं का एलसीएम, जैसा ह

  1. सी ++ में किसी फ़ंक्शन से सरणी कैसे वापस करें?

    सी ++ पूरे सरणी को वापस नहीं करता है लेकिन यह पॉइंटर को सरणी में वापस कर सकता है। फ़ंक्शन के बाहर, स्थानीय चर का पता वापस नहीं किया जा सकता है। स्थानीय चर को स्थिर बनाकर, यह स्थानीय चर का पता वापस कर सकता है। पॉइंटर वापस करने के लिए सिंटैक्स निम्नलिखित है। int * function_name() { body } यहां, fun