কম্পিউটার

C++ এ একই অ্যারেতে প্রতিটি উপাদানের মেঝে


এই সমস্যায়, আমাদেরকে পূর্ণসংখ্যার উপাদানগুলির একটি অ্যারে দেওয়া হয়েছে। আমাদের কাজ হল একই অ্যারেতে প্রতিটি উপাদানের মেঝে খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা৷ যদি একটি উপাদানের তলটি বিদ্যমান থাকে তবে আমরা ফ্লোরটি প্রিন্ট করব অন্যথায় -1 প্রিন্ট করব৷

অ্যারেতে একটি উপাদানের মেঝে সবচেয়ে কাছের উপাদান যা অ্যারের উপাদানটির থেকে ছোট বা সমান।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক

Input: arr[] = {3, 1, 5 ,7, 8, 2}
Output: 2 -1 3 5 7 1

সমাধান পদ্ধতি

সমস্যা সমাধানের একটি পদ্ধতি হল নেস্টেড লুপ ব্যবহার করে। অ্যারের ফোরচ এলিমেন্টের জন্য একটি লুপ এবং অ্যারের মধ্যে এলিমেন্টের মেঝে খুঁজে বের করার জন্য ভিতরেরটি।

সমস্যা সমাধানের আরেকটি পদ্ধতি হল সাজানো অ্যারে সঞ্চয় করার জন্য একটি অতিরিক্ত অ্যারে ব্যবহার করা। তারপর সেই আসল অ্যারেটি লুপ করুন এবং বাইনারি সিচ অ্যালগরিদম ব্যবহার করে সাজানো অ্যারেতে উপাদানটির মেঝে খুঁজুন৷

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

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

void printFloorEle(int arr[], int n){
   vector<int> sortedArr(arr, arr + n);
   sort(sortedArr.begin(), sortedArr.end());
   for (int i = 0; i < n; i++) {
      if (arr[i] == sortedArr[0]) {
         if (arr[i] == sortedArr[1])
            cout<<arr[i];
         else
            cout<<-1;
         cout<<"\t";
         continue;
      }
      auto iterator = lower_bound(sortedArr.begin(),sortedArr.end(), arr[i]);
      if (iterator != sortedArr.end() && *(iterator + 1) == arr[i])
         cout<<arr[i]<<"\t";
      else
         cout<<*(iterator - 1)<<"\t";
   }
}
int main(){
   int arr[] = { 3, 1, 5 ,7, 8, 2 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The Floor of every element of the given array is ";
   printFloorEle(arr, n);
   return 0;
}

আউটপুট

The Floor of every element of the given array is 2 -1 3 5 7
1

  1. C++-এ অ্যারের প্রতিটি উপাদানের জন্য নিকটতম বৃহত্তর মান খুঁজুন

  2. C++ STL-এ অ্যারে get() ফাংশন?

  3. STL-এ অ্যারে বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. একটি অ্যারের সবচেয়ে বড় উপাদান খুঁজে পেতে C++ প্রোগ্রাম