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

किसी दिए गए बिंदु को कवर करने वाले सबसे उपयुक्त आयत को खोजने के लिए C++ प्रोग्राम

इस लेख में, हम किसी दिए गए बिंदु को कवर करने वाले सबसे उपयुक्त आयत को खोजने के लिए एक कार्यक्रम पर चर्चा करेंगे।

इस समस्या में, हमें एक बिंदु (x, y) के निर्देशांक और लंबाई/चौड़ाई का अनुपात =l/b (मान लीजिए) दिया जाता है। हमें एक आयत के निर्देशांक ज्ञात करने हैं जिसमें दिए गए बिंदु हैं और जिनकी विमाएँ दिए गए अनुपात का अनुसरण करती हैं। कई आयत मौजूद होने की स्थिति में, हमें उसके यूक्लिड के केंद्र और दिए गए बिंदु के बीच सबसे कम दूरी वाले को चुनना होगा।

इसे हल करने के लिए, पहले हम अनुपात l/b को न्यूनतम करेंगे। उसके बाद, हम (n,m) क्षेत्र (अनुमत 2d स्थान) में रहने के लिए min(n/l,m/b) मान पाते हैं। सबसे पहले, मान लीजिए कि (x,y) केवल हमारे आयत का केंद्र है। यदि ऐसा नहीं है, तो हम क्रमशः लंबाई और चौड़ाई के मानों को एक साथ घटाकर और जोड़कर मूल निर्देशांक प्राप्त करेंगे।

उदाहरण

#include <cmath>
#include <iostream>
using namespace std;
//to minimize the value of given ratio
int greatest_div(int l, int b) {
   if (l == 0)
      return b;
   else
      return greatest_div(b % l, l);
}
//to calculate the coordinates
void calc_coordinates(int n, int m, int x, int y, int l, int b) {
   int k, div1;
   int x1, y1, x2, y2;
   div1 = greatest_div(l, b);
   l /= div1;
   b /= div1;
   k = min(n / l, m / b);
   //finding the range in which the given point exists
   x1 = x - (k * l - k * l / 2);
   x2 = x + k * l / 2;
   y1 = y - (k * b - k * b / 2);
   y2 = y + k * b / 2;
   //if the coordinates go out of the range
   if (x1 < 0){
      x2 -= x1;
      x1 = 0;
   }
   if (x2 > n){
      x1 -= x2 - n;
      x2 = n;
   }
   if (y1 < 0){
      y2 -= y1;
      y1 = 0;
   }
   if (y2 > m) {
      y1 -= y2 - m;
      y2 = m;
   }
   cout << "Coordinates : " << x1 << " " << y1 << " " << x2<< " " << y2 << endl;
}
int main() {
   int n = 50, m = 20, x = 10, y = 6, l = 4, b = 7;
   calc_coordinates(n, m, x, y, l, b);
   return 0;
}

आउटपुट

Coordinates : 6 0 14 14

  1. सी ++ कोड एक बिंदु खोजने के लिए जो बाधाओं को पूरा करता है

    मान लीजिए, हमें दो बिंदु a =(x1, y1) और b =(x2, y2) दिए गए हैं। दो बिंदुओं के बीच मैनहट्टन दूरी है dist(a, b) =|x1 - x2| + |y1 - y2|। यदि बिंदु a का निर्देशांक (0, 0) है और बिंदु b का निर्देशांक (x, y) है, तो हमें ऐसा बिंदु c ज्ञात करना होगा कि dist(a, c) =dist(a, b)/2 और dist( बी, सी) =जिला (ए, बी)

  1. दिए गए पूर्णांकों से अधिकतम संभव मिलान ज्ञात करने के लिए C++ प्रोग्राम

    मान लीजिए, हमें दो पूर्णांक n और m दिए गए हैं और पूर्णांकों के k टुपल्स हैं जिनमें चार पूर्णांक संख्याएँ {ai, bi, ci, di} हैं। चार सरणियाँ a, b, c, d दिए गए हैं, और a[i] i-th tuple के मान को दर्शाता है। अब, आइए एक अनुक्रम dp पर विचार करें जिसमें n धनात्मक पूर्णांक हैं और 1 <=dp[1]

  1. C++ प्रोग्राम दिए गए ग्राफ़ में ब्रिज किनारों की संख्या का पता लगाने के लिए

    मान लीजिए, हमें एक अभारित, अप्रत्यक्ष ग्राफ दिया गया है जिसमें n कोने और m किनारे हैं। ग्राफ़ में ब्रिज का किनारा वह किनारा होता है जिसके हटाने से ग्राफ़ डिस्कनेक्ट हो जाता है। हमें दिए गए आलेख में ऐसे आलेखों की संख्या ज्ञात करनी है। ग्राफ़ में समानांतर किनारे या सेल्फ़-लूप नहीं होते हैं। इसलिए, यद