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

C++-এ লম্বা সেকশনের ভিতরে রেখার কাটানোর বিন্দু খুঁজুন

y = mx + c রূপে কিছু রেখা দেওয়া আছে। একটি লম্বা সেকশন (x = left থেকে x = right) দেওয়া আছে। এই সেকশনের ভিতরে কোনো দুটি রেখা কাটা কিনা তা যাচাই করতে হবে।

উদাহরণ: L1: y = x + 2, L2: y = -x + 7, L3: y = -3, L4: y = 2x - 7। সেকশন x = 2 থেকে x = 4। এখানে L1 এবং L2-এর কাটানোর বিন্দু সেকশনের ভিতরে পড়ে, তাই উত্তর true।

সর্টিং পদ্ধতি
  • প্রতিটি রেখার বাম ও ডান সীমান্তের সাথে কাটানোর বিন্দুর y-কোর্ডিনেট বের করে জোড়া হিসেবে রাখুন।
  • বাম সীমান্তের y-মান অনুযায়ী জোড়াগুলো সর্ট করুন।
  • क्रमাগত দুটি জোড়া যাচাই করুন: যদি বর্তমান জোড়ার ডান y-মান পূর্ববর্তী জোড়ার ডান y-মান থেকে ছোট হয়, তবে সেকশনের ভিতরে কাটানোর বিন্দু আছে।
উদাহরণ কোড
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;

class line {
public:
    int slope, intercept;
    line() {}
    line(int slope, int intercept) : slope(slope), intercept(intercept) {}
};

int getYCoordinate(line l, int x) {
    return (l.slope * x + l.intercept);
}

bool hasIntersectionPoint(line lines[], int left_range, int right_range, int N) {
    pair<int, int> y_border[N];
    for (int i = 0; i < N; i++)
        y_border[i] = make_pair(getYCoordinate(lines[i], left_range), getYCoordinate(lines[i], right_range));
    sort(y_border, y_border + N);
    for (int i = 1; i < N; i++) {
        if (y_border[i].second < y_border[i-1].second)
            return true;
    }
    return false;
}

int main() {
    int N = 4;
    int slope[] = {1, -1, 0, 2};
    int intercept[] = {2, 7, -3, -7};
    line lines[N];
    for (int i = 0; i < N; i++)
        lines[i] = line(slope[i], intercept[i]);
    int left_range = 2, right_range = 4;
    if (hasIntersectionPoint(lines, left_range, right_range, N))
        cout << "The intersection point is lies between " << left_range << " and " << right_range;
    else
        cout << "No intersection point is present in between " << left_range << " and " << right_range;
}
আউটপুট
The intersection point is lies between 2 and 4
  1. দুটি রেখার ছেদবিন্দু খুঁজে বের করার জন্য C++ প্রোগ্রাম

  2. C++-এ একটি বিন্দু এলিপসের ভিতরে, বাইরে নাকি ওপর আছে কিনা তা যাচাই করা

  3. C++-এ একটি বিন্দু বৃত্তের ভিতরে আছে কিনা তা যাচাই করা

  4. C++ প্রোগ্রাম: দুটি সিরিজের প্রথম কলিশন পয়েন্ট বের করা