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

C++-এ সর্টেড অ্যারেতে নির্দিষ্ট মান খোঁজার প্রোগ্রাম


ধরা যাক একটি সর্টেড ইন্টিজার অ্যারে 'arr' দেওয়া আছে যার আকার n। আরেকটি অ্যারে 'query' দেওয়া আছে যার আকার q। প্রতিটি query মান arr-এ আছে কিনা তা জানাতে হবে। যদি থাকে তবে "Present" এবং এর ১-ভিত্তিক পজিশন প্রিন্ট করুন। যদি না থাকে তবে "Not present" এবং arr-এ query মান থেকে বড় ন্যূনতম মানের পজিশন প্রিন্ট করুন।

উদাহরণস্বরূপ, n=8, arr={1,2,3,4,7,9,12,15}, q=3, query={1,5,8} হলে আউটপুট:

Present 1 Not present 5 Not present 6

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

  • arr-এর সব উপাদান একটি ভেক্টরে কপি করুন
  • প্রতিটি query[i] এর জন্য:
    • lower_bound ব্যবহার করে প্রথম '>= query[i]' এর ইন্ডেক্স idx বের করুন
    • যদি values[idx] == query[i] হয়, তবে "Present " প্রিন্ট করুন
    • অন্যথায় "Not present " প্রিন্ট করুন
    • idx + 1 প্রিন্ট করুন (১-ভিত্তিক)

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন:

#include <vector> #include <iostream> using namespace std; void solve(int n, int arr[], int q, int query[]) {    vector<int> values;    for(int i = 0; i < n; i++){       values.push_back(arr[i]);    }    for(int i = 0; i < q; i++) {       int idx = lower_bound (values.begin(), values.end(),       query[i]) - values.begin();       if (values[idx] == query[i])          cout << "Present ";       else          cout << "Not present ";       cout << idx + 1 << endl;    } } int main() {    int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15};    int query_arr[] = {1, 5, 8};    solve(8, input_arr, 3, query_arr);    return 0; }

ইনপুট (stdin)

int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15}; int query_arr[] = {1, 5, 8}; solve(8, input_arr, 3, query_arr);

আউটপুট

Present 1 Not present 5 Not present 6

  1. সি++-এ অ্যারে বিটোনিক (Bitonic) কিনা তা যাচাই করার প্রোগ্রাম

  2. সি++-এ অ্যারেতে একটি কী (Key) থাকার প্রোবাবিলিটি বের করার প্রোগ্রাম

  3. অ্যারে ডেটা দিয়ে হিস্টোগ্রাম প্রিন্ট (C++)

  4. বাইনারি সার্চ C++ প্রোগ্রামে