কম্পিউটার

একটি অ্যারেতে নির্দিষ্ট মান অনুসন্ধান করতে C++ প্রোগ্রাম


ধরুন আমাদের একটি অ্যারে দেওয়া হয়েছে 'arr' যাতে n সংখ্যার সাজানো পূর্ণসংখ্যার মান রয়েছে। আমাদেরকে q আকারের একটি অ্যারে 'ক্যোয়ারী'ও দেওয়া হয়েছে এবং আমাদের বলতে হবে যে 'ক্যোয়ারী'-এর মানগুলি প্রদত্ত অ্যারে 'অ্যার'-এ উপস্থিত আছে বা নেই। ক্যোয়ারীতে একটি মান যদি arr-এ উপস্থিত থাকে, তাহলে আমরা "বর্তমান" প্রিন্ট করি সেই অবস্থানের সাথে যেখানে মানটি অবস্থিত। অন্যথায়, আমরা "বর্তমান নেই" প্রিন্ট করি এবং arr-এ অবস্থান মুদ্রণ করি, যেখানে ন্যূনতম মান মানের থেকে বেশি কোয়েরি অবস্থিত। আমাদের মনে রাখতে হবে যে অ্যারেগুলি 1-সূচীযুক্ত৷

সুতরাং, যদি ইনপুটটি 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

প্রশ্নের প্রথম মানটি অবস্থান 1-এ উপস্থিত রয়েছে।

প্রশ্নের দ্বিতীয় মান arr-এ উপস্থিত নেই। যে অবস্থানে ন্যূনতম মানটি প্রশ্নে থাকা মানের থেকে বড় 5৷

একইভাবে, প্রশ্নের তৃতীয় মানটিও arr-এ উপস্থিত নেই। যে মানটি এর থেকে বড় সেটি হল arr-এর অবস্থান 6।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি অ্যারের মান নির্ধারণ করুন
  • আরম্ভ করার জন্য i :=0, যখন i করুন
  • মানগুলির শেষে arr[i] ঢোকান
  • আরম্ভ করার জন্য i :=0, যখন i করুন
  • idx :=(মানগুলির প্রথম উপাদানের অবস্থান যা কোয়েরির চেয়ে কম নয় [i]) - মানগুলির প্রথম উপাদান অবস্থান
  • যদি মান [idx] query[i] এর মত হয়, তাহলে −
    • মুদ্রণ("বর্তমান")
  • অন্যথায়,
    • মুদ্রণ("বর্তমান নেই")
  • প্রিন্ট(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. C++ এ একটি অ্যারের বিটনোসিটি পরীক্ষা করার জন্য প্রোগ্রাম

    2. C++-এ অ্যারেতে উপস্থিত একটি কী K-এর সম্ভাবনা

    3. C++ এ একটি অ্যারের হিস্টোগ্রাম তৈরি করার প্রোগ্রাম

    4. C++ প্রোগ্রামে বাইনারি অনুসন্ধান?