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

C++ में 'k' समदूरस्थ बिंदुओं वाले वृत्त में दो दिए गए बिंदुओं के बीच अधिक कोणों की गिनती


हमें K समदूरस्थ बिंदुओं वाले एक वृत्त की परिधि पर दिया गया है। साथ ही हमें दो बिंदु A और B दिए गए हैं। लक्ष्य इन बिंदुओं का उपयोग करके संभव त्रिभुजों की संख्या गिनना है जैसे कि उनके अंदर एक अधिक कोण ACB (90 डिग्री से अधिक कोण) हो। बिंदु A और B ऐसे हैं कि A < B।

C++ में  k  समदूरस्थ बिंदुओं वाले वृत्त में दो दिए गए बिंदुओं के बीच अधिक कोणों की गिनती

यहां K=8, A=2, B=5, बिंदुओं की गिनती=2 (C,C') जैसे कि कोण LACB, LAC'B अधिक हैं।

आइए उदाहरणों से समझते हैं

इनपुट - k=10, A=2, B=4

आउटपुट - 'k' समदूरस्थ बिंदुओं वाले वृत्त में दो दिए गए बिंदुओं के बीच अधिक कोणों की गिनती - 1

व्याख्या - बिंदु C=3 होगा

इनपुट - k=12, A=2, B=10

आउटपुट - 'k' समदूरस्थ बिंदुओं वाले वृत्त में दो दिए गए बिंदुओं के बीच अधिक कोणों की गिनती - 3

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

यह देखा जा सकता है कि A और B के बीच जितना छोटा चाप होगा, बिंदु केवल उस चाप पर होंगे।

दोनों चापों की गणना करें और यदि वे समान लंबाई के हैं तो ऐसा कोई त्रिभुज संभव नहीं है, 0 वापस करें। अन्यथा गिनती को छोटे चाप के रूप में सेट करें जो बिंदुओं के संदर्भ में दूरी है।

  • इनपुट को पूर्णांक k, point_a और point_b के रूप में लें।
  • फ़ंक्शन Obtuse_angle_circle(int point_a, int point_b, int k) सभी चर लेता है और 'k' समदूरस्थ बिंदुओं वाले वृत्त में दो दिए गए बिंदुओं के बीच अधिक कोणों की गिनती वापस करता है
  • प्रारंभिक गिनती 0 लें।
  • पहले चाप की गणना arc_1 = (point_b - point_a) - 1 के रूप में करें। (b>a)
  • दूसरे चाप की गणना (k - point_b) + (point_a - 1) के रूप में करें।
  • यदि दोनों चाप समान हैं तो 0 वापस करें क्योंकि ऐसा कोई बिंदु संभव नहीं है।
  • यदि वे असमान हैं तो गिनती को दोनों के न्यूनतम के रूप में अपडेट करें क्योंकि सभी बिंदु उस पर होते हैं।
  • परिणाम के रूप में गिनती वापस करें।

उदाहरण

#include <bits/stdc++.h> 
using namespace std; 

int Obtuse_angle_circle(int point_a, int point_b, int k){ 
    int count = 0; 
    int arc_1 = (point_b - point_a) - 1; 
    int arc_2 = (k - point_b) + (point_a - 1); 
    if (arc_1 == arc_2){ 
        return 0; 
    } 
    count = min(arc_1, arc_2); 
    return count; 
} 

int main(){ 
    int k = 10; 
    int point_a= 1; 
    int point_b = 4; 
    cout<<"Count of obtuse angles in a circle with 'k' equidistant points between 2 given points are: "<<Obtuse_angle_circle(point_a, point_b, k); 
    return 0; 
}

आउटपुट

Count of obtuse angles in a circle with 'k' equidistant points between 2 given points are: 2
  1. C++ में कुल n बिंदुओं और m संरेखीय बिंदुओं वाले त्रिभुजों की गिनती C++ में कुल n बिंदुओं और m संरेखीय बिंदुओं वाले त्रिभुजों की गिनती

    हमें दो चर n और m दिए गए हैं जो 2D तल पर बिंदुओं की संख्या दर्शाते हैं। n बिंदुओं में से, m बिंदु संरेखीय (collinear) हैं। लक्ष्य इन n बिंदुओं का उपयोग करके बनने वाले त्रिभुजों की संख्या ढूंढना है। संरेखीय बिंदु (Collinear points) - वे बिंदु जो एक ही रेखा पर होते हैं उन्हें संरेखीय कहा जाता है। बि

  1. C++ में दिए गए वृत्त के दो भागों के कोणों का सबसे छोटा अंतर ढूंढना C++ में दिए गए वृत्त के दो भागों के कोणों का सबसे छोटा अंतर ढूंढना

    इस समस्या में, हमें एक ऐरे दिया गया है जो वृत्त के टुकड़ों को उनके कोणों के आधार पर दर्शाता है। हमारा कार्य C++ में दिए गए वृत्त के दो भागों के कोणों का सबसे छोटा अंतर ढूंढने के लिए एक प्रोग्राम बनाना है। समस्या विवरण हमें ऐरे में वृत्त के सभी टुकड़ों के कोण दिए गए हैं। हमें टुकड़ों को इस तरह जोड़न

  1. - दिए गए निर्देशांक सेट से न्यूनतम क्षेत्रफल का आयत खोजें C++ में

    मान लीजिए हमारे पास XY तल में कुछ बिंदुओं का एक ऐरे है। हमें इन बिंदुओं से बनने वाले न्यूनतम क्षेत्रफल के आयत को खोजना है। आयत की भुजा X और Y अक्षों के समानांतर होनी चाहिए। यदि हम आयत नहीं बना सकते, तो 0 वापस करें। तो यदि बिंदुओं का ऐरे [(1, 1), (1, 3), (3, 1), (3, 3), (2, 2)] जैसा है। आउटपुट 4 होगा