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

इमारत के केंद्र निर्देशांक और ऊँचाई ज्ञात करने का C++ प्रोग्राम


मान लीजिए एक इमारत है जिसके केंद्र निर्देशांक xc, yc और ऊँचाई h हैं। हमें केंद्र निर्देशांक ज्ञात नहीं हैं, लेकिन हमारे पास n जानकारियाँ हैं जिनमें x, y निर्देशांक और ऊँचाई मान a है। निर्देशांक (x, y) की ऊँचाई max(h - |x - xc| - |y - yc|, 0) होती है। हमें इमारत के केंद्र निर्देशांक और ऊँचाई ज्ञात करनी है। निर्देशांक xi सरणी x में, yi सरणी y में, और ai सरणी a में दिया गया है।

उदाहरण के लिए, यदि इनपुट है n = 3, x = {3, 3, 2}, y = {4, 2, 3}, a = {6, 6, 6}, तो आउटपुट 3 3 7 होगा।

केंद्र निर्देशांक 3,3 हैं और इमारत की ऊँचाई 7 है।

चरण

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:

check := true
xc := 0 से 100 तक:
    yc := 0 से 100 तक:
        check := true
        mh := 2000000000
        h := -1
        i := 0 से n-1 तक:
            k := |x[i] - xc| + |y[i] - yc|
            यदि a[i] == 0, तो:
                mh := min(mh, k)
            अन्यथा:
                यदि h < 0, तो:
                    h := a[i] + k
                अन्यथा यदि h != a[i] + k, तो:
                    check := false
                    लूप से बाहर निकलें
        यदि h > mh, तो:
            check := false
            अगली पुनरावृत्ति पर जाएँ
        यदि check सत्य है, तो:
            लूप से बाहर निकलें
    यदि check सत्य है, तो:
        लूप से बाहर निकलें
xc, yc, h प्रिंट करें

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; void solve(int n, vector<int> x, vector<int> y, vector<int> a){    bool check = true;    int xc, yc, h;    for (xc = 0; xc <= 100; xc++) {       for (yc = 0; yc <= 100; yc++) {          check = true;          int k, mh = 2e9;          h = -1;          for(int i = 0; i < n; i++) {             k = abs(x[i] - xc) + abs(y[i] - yc);             if (a[i] == 0) {                mh = min(mh, k);             } else {                if (h < 0) {                   h = a[i] + k;                } else if (h != a[i] + k) {                   check = false;                   break;                }             }          }          if (h > mh) {           check = false; continue; } if (check) { break; } } if (check) { break; } } cout << xc << " " << yc << " " << h; } int main() { int n = 3; vector<int> x = {3, 3, 2}, y = {4, 2, 3}, a = {6, 6, 6}; solve(n, x, y, a); return 0; }

इनपुट

3, {3, 3, 2}, {4, 2, 3}, {6, 6, 6}

आउटपुट

3 3 7
  1. C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम

    इस समस्या में, हमें एक 2D ऐरे दिया गया है जो त्रिभुज के तीन शीर्षों के निर्देशांक को दर्शाता है। हमारा कार्य C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम बनाना है।केंद्रक (Centroid) त्रिभुज का वह बिंदु है जहां त्रिभुज की तीनों मध्यिकाएं (medians) प्रतिच्छेद करती हैं।मध्यिका (Median)

  1. C++ में समानांतर चतुर्भुज (Parallelogram) का क्षेत्रफल ज्ञात करने का प्रोग्राम C++ में समानांतर चतुर्भुज (Parallelogram) का क्षेत्रफल ज्ञात करने का प्रोग्राम

    इस समस्या में, हमें दो मान दिए गए हैं जो समानांतर चतुर्भुज के आधार (base) और ऊंचाई (height) को दर्शाते हैं। हमारा कार्य C++ में समानांतर चतुर्भुज (Parallelogram) का क्षेत्रफल ज्ञात करने का प्रोग्राम बनाना है।समानांतर चतुर्भुज (Parallelogram) चार भुजाओं वाली एक बंद आकृति है जिसकी विपरीत भुजाएं समान औ

  1. C++ में ट्री की अधिकतम गहराई या ऊंचाई खोजने का प्रोग्राम C++ में ट्री की अधिकतम गहराई या ऊंचाई खोजने का प्रोग्राम

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है। हमारा कार्य दी गई ट्री की अधिकतम गहराई या ऊंचाई खोजने के लिए एक प्रोग्राम लिखना है। आइए एक उदाहरण से समस्या को समझते हैं, ट्री की ऊंचाई 3 है। ट्री की अधिकतम ऊंचाई खोजने के लिए, हम उसके लेफ्ट और राइट सबट्री की ऊंचाई की जांच करेंगे और दोनों के अधिकत