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

जाँच करें कि क्या दिए गए चार बिंदु एक वर्ग बनाते हैं


2d समतल में, चार बिंदु दिए गए हैं। यह एल्गोरिथम जांच करेगा कि चार बिंदु एक वर्ग बना रहे हैं या नहीं।

एक वर्ग के लिए जाँच करने पर हमें इन शर्तों से मेल खाना होगा -

  • दिए गए बिंदुओं से बनी चारों भुजाएं समान हैं।
  • सभी दो कनेक्टिंग पक्ष समकोण हैं।

इनपुट और आउटपुट

Input:
Four points {(20, 10), (10, 20), (20, 20), (10, 10)}
Output:
Points are forming a square.

एल्गोरिदम

isFormingSquare(p1, p2, p3, p4)

इस प्रक्रिया में, हम एक विधि का उपयोग करेंगे SquareDist(p1, p2), यह दो दिए गए बिंदुओं की वर्ग दूरी लौटाएगा।

इनपुट: चार अंक।

आउटपुट: सही है जब दिए गए बिंदु एक वर्ग बना रहे हैं।

Begin
   dist12 := squareDist(p1, p2)
   dist13 := squareDist(p1, p3)
   dist14 := squareDist(p1, p4)

   if dist12 = dist13 and 2*dist12 = dist14, then
      dist := squareDist(p2, p4)
      return true when dist = squareDist(p3, p4) and dist = dist12
   if dist13 = dist14 and 2*dist13 = dist12, then
      dist := squareDist(p2, p3)
      return true when dist = squareDist(p2, p4) and dist = dist13
   if dist12 = dist14 and 2*dist12 = dist13, then
      dist := squareDist(p2, p3)
      return true when dist = squareDist(p3, p4) and dist = dist12
   return false
End

उदाहरण

#include<iostream>
using namespace std;

struct Point {
   int x, y;
};

int squareDist(Point p, Point q) {
   return (p.x - q.x)*(p.x - q.x) + (p.y - q.y)*(p.y - q.y);
}

bool isSquare(Point p1, Point p2, Point p3, Point p4) {    //check four points are forming square or not
   int dist12 = squareDist(p1, p2);     // distance from p1 to p2
   int dist13 = squareDist(p1, p3);     // distance from p1 to p3
   int dist14 = squareDist(p1, p4);     // distance from p1 to p4

   //when length of p1-p2 and p1-p3 are same, and square of (p1-p4) = 2*(p1-p2)
   if (dist12 == dist13 && 2*dist12 == dist14) {
      int dist = squareDist(p2, p4);
      return (dist == squareDist(p3, p4) && dist == dist12);
   }

   //same condition for all other combinations
   if (dist13 == dist14 && 2*dist13 == dist12) {
      int dist = squareDist(p2, p3);
      return (dist == squareDist(p2, p4) && dist == dist13);
   }

   if (dist12 == dist14 && 2*dist12 == dist13) {
      int dist = squareDist(p2, p3);
      return (dist == squareDist(p3, p4) && dist == dist12);
  }
  return false;
}

int main() {
   Point p1 = {20, 10}, p2 = {10, 20}, p3 = {20, 20}, p4 = {10, 10};
   if(isSquare(p1, p2, p3, p4))
      cout << "Points are forming a square.";
   else
      cout << "Points are not forming a square";
}

आउटपुट

Points are forming a square.

  1. जांचें कि दिया गया ग्राफ पेड़ है या नहीं

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

  1. पायथन में बिंदुओं की सूची एक सीधी रेखा बनाती है या नहीं, यह जांचने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास कार्टेशियन तल में निर्देशांकों की एक सूची है, हमें यह जांचना होगा कि निर्देशांक एक सीधी रेखा खंड बनाते हैं या नहीं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - (x0, y0) :=निर्देशांक[0] (x1, y1) :=निर्देशांक[1] i के लिए 2 से लेकर निर्देशांक सूची के आकार तक - 1, do (x, y

  1. चार बिंदु खोजें जैसे कि वे एक वर्ग बनाते हैं जिसकी भुजाएँ पायथन में x और y कुल्हाड़ियों के समानांतर होती हैं

    मान लीजिए कि हमारे पास n अंक हैं; हमें चार बिंदु खोजने होंगे ताकि वे एक वर्ग उत्पन्न कर सकें जिसकी भुजाएँ x और y कुल्हाड़ियों के समानांतर हों अन्यथा संभव नहीं लौटते हैं यदि हम एक से अधिक वर्ग पा सकते हैं तो वह चुनें जिसका क्षेत्रफल अधिकतम है। इसलिए, यदि इनपुट n =6 की तरह है, तो अंक =[(2, 2), (5, 5)