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

C++-এ একটি প্রদত্ত মান কোন ইন্টারভালগুলোর মধ্যে আছে সেটির সংখ্যা গণনা


একটি ২D অ্যারে arr[][] দেওয়া আছে যাতে ইন্টারভালগুলো সংরক্ষিত আছে এবং একটি সংখ্যা value। লক্ষ্য হলো arr-এ থাকা ইন্টারভালগুলোর মধ্যে কতটিতে value অবস্থিত সেটি বের করা। উদাহরণস্বরূপ, ইন্টারভালগুলো হলো [ [1,5], [3,7] ] এবং value=4 হলে এটি উভয় ইন্টারভালের মধ্যেই পড়ে, তাই কাউন্ট হবে ২।

উদাহরণ ১

ইনপুট

arr[4][2] = { { 1, 20 }, { 12, 25 }, { 32, 40 }, { 15, 18 } } value=16

আউটপুট

প্রদত্ত মানের মধ্যে কোন ইন্টারভালগুলো আছে সেটির সংখ্যা: 3

ব্যাখ্যা

মান ১৬, ১-২০, ১২-২৫ এবং ১৫-১৮ এই তিনটি ইন্টারভালের মধ্যে আছে।

উদাহরণ ২

ইনপুট

arr[4][2] = {{ 1, 20 }, { 20,30 }, { 30, 40 }, { 40, 50 }} value=60

আউটপুট

প্রদত্ত মানের মধ্যে কোন ইন্টারভালগুলো আছে সেটির সংখ্যা: 0

ব্যাখ্যা

মান ৬০, arr[][]-এ থাকা সকল ইন্টারভালের সর্বোচ্চ রেঞ্জের চেয়ে বড়।

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

এই পদ্ধতিতে arr-এ থাকা সকল রেঞ্জের সংখ্যাগুলোর জন্য একটি ফ্রিকোয়েন্সি অ্যারে arr_2[] তৈরি করা হয়। প্রতিটি রেঞ্জের arr[i][0] এবং arr[i][1] এর জন্য arr_2[ arr[i][0 বা 1] ]-এ ফ্রিকোয়েন্সি বাড়ানো হয়। শেষে ফ্রিকোয়েন্সি অ্যারেটি আপডেট করা হয়: arr_2[i] = arr_2[i] + arr_2[i-1], কারণ i-1 এর চেয়ে ছোট সংখ্যাগুলো i-এর চেয়েও ছোট, তাই ফ্রিকোয়েন্সি যোগ হয়। এইভাবে arr_2[value] আমাদের বताয় যে মানটি কতগুলো ইন্টারভালের মধ্যে আছে।

  • ইন্টারভালগুলো ধারণকারী ইন্টিজার অ্যারে arr[][] নিন।

  • ইনপুট হিসেবে একটি ইন্টিজার value নিন।

  • intervals_values(int arr[][2], int size, int value) ফাংশনটি arr এবং value গ্রহণ করে মানটি কোন ইন্টারভালগুলোর মধ্যে আছে সেটির সংখ্যা রিটার্ন করে।

  • একটি ফ্রিকোয়েন্সি অ্যারে arr_2[] নিন।

  • low এবং highest ভেরিয়েবল দুটিকে INT_MAX এবং INT_MIN দিয়ে আরম্ভ করুন।

  • for লুপ দিয়ে i=0 থেকে i<size পর্যন্ত arr[][] টрэভার্স করুন।

  • রেঞ্জের বাম মান temp-এ নিয়ে arr_2[temp]-এ এর ফ্রিকোয়েন্সি বাড়ান।

  • রেঞ্জের ডান মান temp_2-এ নিয়ে arr_2[temp_2+1]-এ এর ফ্রিকোয়েন্সি কমান।

  • যদি temp < low হয় তবে low = temp এবং যদি temp_2 > highest হয় তবে highest = temp_2 সেট করুন।

  • ফ্রিকোয়েন্সি অ্যারেটি ট্রুভার্স করে আপডেট করুন: arr_2[i] = arr_2[i] + arr_2[i-1]।

  • শেষে arr_2[value] রিটার্ন করুন ফলাফল হিসেবে।

উদাহরণ কোড

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

int intervals_values(int arr[][2], int size, int value) {
    int arr_2[max]; 
    int low = INT_MAX; 
    int highest = INT_MIN; 
    
    for(int i = 0; i < size; i++) {
        int temp = arr[i][0]; 
        arr_2[temp] = arr_2[temp] + 1; 
        int temp_2 = arr[i][1]; 
        arr_2[temp_2 + 1] = arr_2[temp_2 + 1] - 1; 
        
        if(temp < low) { low = temp; } 
        if(temp_2 > highest) { highest = temp_2; } 
    } 
    
    for (int i = low; i <= highest; i++) {
        arr_2[i] = arr_2[i] + arr_2[i - 1]; 
    } 
    
    return arr_2[value]; 
} 

int main() { 
    int arr[4][2] = { { 3, 20 }, { 2, 13 }, { 25, 30 }, { 15, 40 } }; 
    int size = sizeof(arr) / sizeof(arr[0]); 
    int value = 28; 
    cout << "প্রদত্ত মানের মধ্যে কোন ইন্টারভালগুলো আছে সেটির সংখ্যা: " << intervals_values(arr, size, value); 
    return 0; 
}

আউটপুট

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

প্রদত্ত মানের মধ্যে কোন ইন্টারভালগুলো আছে সেটির সংখ্যা: 18830628

  1. C++-এ দिये गये আয়তের ভেতরে সম্ভাব্য রম্বসের সংখ্যা গণনা

  2. C++-এ দেওয়া এক্সপ্রেশনের মান সর্বাধিক করা

  3. দেওয়া তালিকা থেকে কোনো সংখ্যা যাতে ফাংশনের মান A-র সন্নিকট হয় C++-তে

  4. C++-এ দেওয়া সংখ্যার ডিজিটগুলোর যোগফল বের করা