কম্পিউটার টিউটোরিয়াল

C++-এ আয়তক্ষেত্রের এলিয়া হিসাব


দুটি রেক্টিলিনিয়ার আয়তক্ষেত্র দ্বারা কভার করা মোট এলিয়া বের করতে হবে। প্রতিটি আয়তক্ষেত্র তার নিচের বাম কোণা (bottom-left) এবং উপরের ডান কোণা (top-right) দিয়ে সংজ্ঞায়িত।

সমাধানের ধাপসমূহ

  • যদি আয়ত দুটি ওভারল্যাপ না করে (C <= E বা A >= G বা B >= H বা D <= F), তবে মোট এলিয়া = (C-A)*(D-B) + (G-E)*(H-F)।
  • অন্যথায়, আড়া়যয় এলিয়া বাদ দিয়ে মোট এলিয়া বের করুন।
  • x-কম্পোনেন্ট (A, C, E, G) এবং y-কম্পোনেন্ট (B, D, F, H) আলাদা অ্যারের সাজান।
  • সাজানোর পর দুটি মধ্যবর্তী মান থেকে আড়া়যয় এলিয়া বের করুন।
  • মোট এলিয়া = আয়ত১ + আয়ত২ - আড়া়যয় এলিয়া।

C++ উদাহরণ

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

class Solution {
public:
    int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
        if (C <= E || A >= G || B >= H || D <= F)
            return (C - A) * (D - B) + (G - E) * (H - F);
        vector<int> h = {A, C, E, G};
        vector<int> v = {B, D, F, H};
        sort(h.begin(), h.end());
        sort(v.begin(), v.end());
        long long overlap = 1LL * (h[2] - h[1]) * (v[2] - v[1]);
        long long total = 1LL * (C - A) * (D - B) + 1LL * (G - E) * (H - F);
        return total - overlap;
    }
};

int main() {
    Solution ob;
    cout << ob.computeArea(-3, 0, 3, 4, 0, -1, 9, 2);
}

ইনপুট

-3 0 3 4 0 -1 9 2

আউটপুট

45
  1. C++-এ আয়তাকার এলাকা II (Rectangle Area II) সমাধান

  2. সি++-এ সমান্তরাল চতুর্ভুজের (Parallelogram) ক্ষেত্রফল বের করার প্রোগ্রাম

  3. প্যারালেলোগ্রামের ভিতরে ত্রিভুজের ক্ষেত্রফল C++-এ

  4. C++-এ বর্গের পরিবেষ্টিত বৃত্তের ক্ষেত্রফল