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

মোট n বিন্দু এবং m সংরেখ বিন্দু দিয়ে ত্রিভুজের গণনা (C++ প্রোগ্রাম)

আমাদের দুটি ভেরিয়েবল n এবং m দেওয়া আছে যা ২D প্লেনে বিন্দুর সংখ্যা নির্দেশ করে। n বিন্দুর মধ্যে m বিন্দু সংরেখ (collinear)। লক্ষ্য হল এই n বিন্দু ব্যবহার করে কতগুলো ত্রিভুজ তৈরি করা যায় সেটি বের করা।

সংরেখ বিন্দু (Collinear points): একই রেখায় অবস্থিত বিন্দুগুলোকে সংরেখ বিন্দু বলে। বিন্দু A এবং B সংরেখ।

মোট n বিন্দু এবং m সংরেখ বিন্দু দিয়ে ত্রিভুজের গণনা (C++ প্রোগ্রাম)

দেওয়া n=4 (A,B,C,D), m=2 (A,B)

ত্রিভুজের সংখ্যা:

৪ বিন্দু থেকে যেকোনো ৩টি বেছে নেওয়া = ⁴C₃

কিন্তু সংরেখ বিন্দু ত্রিভুজ তৈরি করতে পারে না তাই উপরের হিসাব থেকে সম্ভাব্য ত্রিভুজ বাদ দিতে হবে = ²C₃

মোট ত্রিভুজ = ⁴C₃ - ²C₃ = 4 - 0 = 4 (ABC, ACD, BCD, ABD)

সাধারণত n এবং m এর জন্য = nC₃ - mC₃

উদাহরণ

ইনপুট: n=5, m=3

আউটপুট: মোট n বিন্দু এবং m সংরেখ বিন্দু দিয়ে ত্রিভুজের গণনা: 9

ব্যাখ্যা: মোট ত্রিভুজ = ⁵C₃ - ³C₃ = 10 - 1 = 9

ইনপুট: n=10, m=5

আউটপুট: মোট n বিন্দু এবং m সংরেখ বিন্দু দিয়ে ত্রিভুজের গণনা: 110

ব্যাখ্যা: মোট ত্রিভুজ = ¹⁰C₃ - ⁵C₃ = 120 - 10 = 110

প্রোগ্রামে ব্যবহৃত পদ্ধতি

আমরা প্যাসকালের ত্রিভুজ (pascal triangle) তৈরি করব কম্বিনেশন (combination) হিসাবের জন্য। প্রতিটি সারি আগের সারির কলাম যোগ করে হিসাব করা হয়।

  • n এবং m ইনপুট নিন বিন্দুর সংখ্যা হিসেবে।
  • collinear_points(int n,int m) ফাংশন n এবং m নেয় এবং মোট n বিন্দু এবং m সংরেখ বিন্দু দিয়ে ত্রিভুজের গণনা ফেরত দেয়।
  • count = check(n, 3) - check(m, 3) সেট করুন (nC₃ - mC₃ হিসাবের জন্য)।
  • check(int n, int r) ফাংশন n এবং r নেয় এবং nCᵣ এর মান ফেরত দেয়।
  • r+1 দৈর্ঘ্যের একটি অ্যারে arr নিন।
  • memset দিয়ে পুরো অ্যারে ০ দিয়ে আরম্ভিক করুন।
  • arr[0] = 1 সেট করুন।
  • দুটি for লুপ দিয়ে i=1 থেকে i<=n এবং j=min(i,r) থেকে j>0 পর্যন্ত প্যাসকালের ত্রিভুজ হিসাব করুন arr[j]=arr[j]+arr[j-1]।
  • শেষে arr[r]-এ nCᵣ এর মান পাওয়া যাবে। এটিকে ফেরত দিন।
  • check() ফাংশন শেষে ত্রিভুজের গণনা পাওয়া যাবে।
  • ফলাফল হিসেবে count ফেরত দিন।
C++ প্রোগ্রাম উদাহরণ
#include 
using namespace std;

int check(int n, int r) {
    int arr[r + 1];
    memset(arr, 0, sizeof(arr));
    arr[0] = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = min(i, r); j > 0; j--) {
            arr[j] = arr[j] + arr[j - 1];
        }
    }
    return arr[r];
}

int collinear_points(int n, int m) {
    int count = check(n, 3) - check(m, 3);
    return count;
}

int main() {
    int n = 6, m = 2;
    cout << "Count of triangles with total n points with m collinear are: " << collinear_points(n, m);
    return 0;
}
আউটপুট
Count of triangles with total n points with m collinear are: 20
  1. বৃত্তে 'k' সমদূরবর্তী বিন্দুর মধ্যে ২টি বিন্দু দিয়ে……、 কোণের গণনা (C++ প্রোগ্রাম)

  2. C++-এ সব ১ সম্বহ একটি বর্গ উপম্যাট্রিক্স গণনা করুন

  3. C++-এ অদ্বিতীয় ডিজিটযুক্ত সংখ্যা গণনা

  4. C++-এ 'a' সংখ্যা 'b'-র চেয়ে বেশি হয় এমন প্রিফিক্সের সংখ্যা (Prefixes with More a than b)