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

C++ में सरणी से चार भुजाओं को चुनकर अधिकतम क्षेत्रफल आयत


आयत के क्षेत्रफल की गणना उसकी भुजाओं के गुणनफल के रूप में की जाती है। सभी आयतों की चार भुजाएँ इस प्रकार होती हैं कि सम्मुख भुजाएँ बराबर होती हैं। क्षेत्रफल की गणना के लिए हमें दो भुजाओं के रूप में लंबाई और चौड़ाई की आवश्यकता होती है। ताकि हम वांछित परिणाम प्राप्त कर सकें -

क्षेत्रफल आयत =लंबाई X चौड़ाई

हमें एक सरणी इस प्रकार दी गई है कि इसमें एक आयत की भुजाएँ हों। सरणी में यादृच्छिक क्रम में सभी चार पक्षों के मान होते हैं। यहाँ कार्य आयत के लिए संभव अधिकतम क्षेत्रफल प्राप्त करने के लिए सरणी से पक्षों के दो उच्चतम युग्मों को खोजना है।

इनपुट

Arr[] = { 1,2,1,3,4,4,2,3,5,7 }.

आउटपुट − सरणी से चार भुजाओं को चुनकर अधिकतम क्षेत्रफल आयत -12

स्पष्टीकरण -यदि हम दिए गए सरणी को अवरोही क्रम में क्रमबद्ध करते हैं, तो हमें मिलता है,

Arr[]= { 7,5,4,4,3,3,2,1,1 }

पक्षों के दो जोड़े (कुल चार भुजाएँ) जो यहाँ अधिकतम हैं {(4,4),(3,3)} हैं। इसलिए वांछित अधिकतम संभव क्षेत्र 12 वर्ग इकाई है।

इनपुट

Arr[] = { 8,2,5,3,4,9,8,3,5,7 }.

आउटपुट - सरणी से चार भुजाओं को चुनकर अधिकतम क्षेत्रफल आयत - 40

स्पष्टीकरण -यदि हम दिए गए सरणी को अवरोही क्रम में क्रमबद्ध करते हैं, तो हमें मिलता है,

Arr[]= { 9,8,8,7,5,5,4,3,3,2 }

पक्षों के दो जोड़े (कुल चार भुजाएँ) जो यहाँ अधिकतम हैं {(8,8),(5,5)} हैं। इसलिए वांछित अधिकतम संभव क्षेत्र 40 वर्ग इकाई है।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • पूर्णांकों की एक सरणी घोषित करें जिसमें आयत की भुजाओं के जोड़े हों।( Arr[] )

  • सरणी के आकार को संग्रहीत करने के लिए एक चर बनाएँ। (एन)

  • फ़ंक्शन maxArea(int arr[],int n) का उपयोग आयत के अधिकतम क्षेत्र की गणना के लिए किया जाता है। यह एक इनपुट ऐरे और उसके आकार को तर्कों के रूप में लेता है।

  • मैक्सएरिया () के अंदर हमने एक ऐरे डिम [2] घोषित किया है, दो स्टोर उच्चतम दो पक्षों को सॉर्ट किए गए सरणी (अवरोही क्रम में) एआर [] को पार करने के बाद मिला।

  • जैसा कि arr[] को अवरोही क्रम में क्रमबद्ध किया गया है, उच्चतम 4 पक्ष शुरुआत में होने चाहिए। हम arr[] को पुनरावृति करते हैं जैसे कि पक्षों की एक जोड़ी मिल जाती है।

  • डिम [] को पहले 0 से प्रारंभ करें।

  • जबकि लूप के अंदर हम शर्त रखते हैं कि यह j<2 तक जारी रहे कि dim[0] और dim[1] के लिए कोई मान नहीं मिला है या arr[] के अंत तक पहुंच गया है। (मैं<एन)।

  • यदि ऐसी भुजाओं का एक जोड़ा मिलता है, ( if(arr[i]==arr[i+1]) ), तो इसे dim[j] में संग्रहित करें और अगले पक्ष के लिए वृद्धि j करें।

  • परिणाम को dim[0] और dim[1] के गुणनफल के रूप में लौटाएं।

  • नोट - सॉर्ट (arr,n) गिरफ्तारी को अवरोही क्रम में सॉर्ट करना चाहिए।

उदाहरण

#include <iostream>
using namespace std;
// function for finding max area for rectangle
int maxArea(int arr[], int n){
   int dim[2]={0};
   int i=0,j=0;
   while( j<2 && i<n){
      if(arr[i]==arr[i+1]){
         dim[j++]=arr[i];
      }
      ++i;
   }
   return dim[0]*dim[1];
}
// driver function
int main(){
   int arr[] = { 1,8,5,1,8,2,5,3 };
   int n = 8;
   sort(arr,n); // supposed to sort array in descending order
   cout <<”Maximum area of rectangle by picking four sides from array:”<< maxArea(arr, n);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Maximum area of rectangle by picking four sides from array: 40

  1. C++ में आयत क्षेत्र II

    मान लीजिए कि हमारे पास (अक्ष-संरेखित) आयतों की एक सूची है। यहाँ प्रत्येक आयत [i] ={x1, y1, x2, y2}, जहाँ (x1, y1) निचले-बाएँ कोने का बिंदु है, और (x2, y2) ऊपरी-दाएँ कोने के बिंदु हैं आयत। हमें समतल में सभी आयतों द्वारा कवर किया गया कुल क्षेत्रफल ज्ञात करना है। उत्तर बहुत हो सकता है, इसलिए हम मॉड्यू

  1. C++ में दिए गए परिधि के साथ आयत का अधिकतम क्षेत्रफल संभव है

    एक आयत की परिधि को देखते हुए, कार्य उस दिए गए परिधि के साथ आयत का अधिकतम क्षेत्रफल ज्ञात करना है। आयत एक प्रकार का समांतर चतुर्भुज होता है जिसकी सम्मुख भुजाएँ बराबर और समानांतर होती हैं। एक आयत का परिमाप एक आयत की सभी भुजाओं का योग होता है; हम यह भी कह सकते हैं कि परिधि आयत के बाहर की कुल दूरी ह

  1. C++ में आयत क्षेत्र

    मान लीजिए कि हम 2D समतल में दो आयताकार आयतों द्वारा कवर किए गए कुल क्षेत्रफल को ज्ञात करना चाहते हैं। यहाँ प्रत्येक आयत को उसके निचले बाएँ कोने और ऊपरी दाएँ कोने से परिभाषित किया गया है जैसा कि चित्र में दिखाया गया है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - =एच या डी <=एफ, तो वापसी