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

C++-এ আয়তক্ষেত্রের পাশের অনুপাত একটি রেঞ্জে আছে সেটির সংখ্যা গণনা


আয়তক্ষেত্রের পাশগুলো এবং রেঞ্জ ভেরিয়েবল first এবং last দেওয়া আছে। লক্ষ্য হলো সেসব আয়তক্ষেত্রের সংখ্যা বের করা যাদের পাশের দৈর্ঘ্যের অনুপাত (length/breadth) [first, last] রেঞ্জের মধ্যে পড়ে।

উদাহরণ ১

ইনপুট

rec[] = { { 200, 210 }, { 100, 50 }, { 300, 190}, {180, 200}, {300, 200}} and first = 1.0, last = 1.6

আউটপুট

পাশের অনুপাত [a,b] রেঞ্জে আছে এমন আয়তক্ষেত্রের সংখ্যা: 4

ব্যাখ্যা

যেসব পাশের অনুপাত [1.0, 1.6] রেঞ্জে আছে: {200,210}, {300,190}, {180,200}, {300,200}

উদাহরণ ২

ইনপুট

rec[] = { { 10,20 }, { 30, 10 }, { 100, 500}, {900, 300}, {450, 90}} and first = 3.0, last = 4.0

আউটপুট

পাশের অনুপাত [a,b] রেঞ্জে আছে এমন আয়তক্ষেত্রের সংখ্যা: 2

ব্যাখ্যা

যেসব পাশের অনুপাত [3.0, 4.0] রেঞ্জে আছে: {30,10}, {900,300}

প্রয়োগ করা পদ্ধতি

এই পদ্ধতিতে পাশগুলো pair টাইপের অ্যারে হিসেবে নেওয়া হয়। প্রতিটি পেয়ারের জন্য চেক করা হয় যে বড় মান/ছোট মানের ফলাফল [first, last] রেঞ্জের মধ্যে পড়ে কিনা। যদি হয় তবে সেক্ষنین পেয়ারের কাউন্ট বাড়ানো হয়।

  • pair টাইপের অ্যারে rec[] নিন।

  • রেঞ্জ সংজ্ঞায়িত করার জন্য দুটি ভেরিয়েবল first এবং last নিন।

  • ratio_sides(pair rec[], int total, double first, double last) ফাংশনটি আয়তক্ষেত্রের পাশ এবং রেঞ্জ গ্রহণ করে ফলাফল রিটার্ন করে।

  • আরম্ভিক কাউন্ট ০ রাখুন।

  • for লুপ দিয়ে i=0 থেকে i পর্যন্ত ট্রুভার্স করুন।

  • rec[i]-এ বড় মান maxi = max(rec[i].first, rec[i].second) হিসেবে বের করুন।

  • rec[i]-এ ছোট মান mini = min(rec[i].first, rec[i].second) হিসেবে বের করুন।

  • average = maxi/mini ক্যালকুলেট করুন।

  • যদি average-র মান [first, last] রেঞ্জে পড়ে, তবে কাউন্ট বাড়ান।

  • for লুপ শেষে কাউন্ট রিটার্ন করুন ফলাফল হিসেবে।

উদাহরণ কোড

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

int ratio_sides(pair<int, int> rec[], int total, double first, double last) {
    int count = 0; 
    
    for (int i = 0; i < total; i++) {
        double maxi = max(rec[i].first, rec[i].second); 
        double mini = min(rec[i].first, rec[i].second); 
        double average = maxi/mini; 
        
        if (average >= first) {
            if(average <= last) {
                count++; 
            } 
        } 
    } 
    
    return count; 
} 

int main() { 
    pair<int, int> rec[] = { { 200, 210 }, { 100, 50 }, { 300, 190}, {180, 200}, {300, 200}}; 
    int total = 5; 
    double first = 1.0, last = 1.6; 
    cout << "পাশের অনুপাত [a,b] রেঞ্জে আছে এমন আয়তক্ষেত্রের সংখ্যা: " << ratio_sides(rec, total, first, last); 
    return 0; 
}

আউটপুট

উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:

পাশের অনুপাত [a,b] রেঞ্জে আছে এমন আয়তক্ষেত্রের সংখ্যা: 4

  1. C++-এ x+y+z সর্বোচ্চ করা s.t. ax+by+cz=n

  2. সর্বনিম্ন সংখ্যা K খুঁজে বের করা যাতে K % p = 0 এবং q % K = 0 C++-তে

  3. সি++ প্রোগ্রাম: X!-তে কমপক্ষে Yটি ট্রেইলিং জিরো থাকা সর্বনিম্ন X নির্ণয়

  4. সি++ প্রোগ্রাম: সংখ্যা বিভাজ্য করে এমন অঙ্কগুলোর গণনা (Count of Digits Dividing the Number)