কম্পিউটার

একটি অ্যারেকে এমনভাবে সাজান যাতে প্রতিটি বিজোড় সূচীকৃত উপাদান তার আগের C++ থেকে বড় হয়


আমাদেরকে একটি ধনাত্মক পূর্ণসংখ্যা টাইপ অ্যারে দেওয়া হয়েছে, ধরা যাক, যে কোনো প্রদত্ত আকারের arr[]। কাজটি হল একটি বিন্যাসকে এমনভাবে সাজানো যাতে একটি বিজোড় সূচকে উপস্থিত সমস্ত উপাদানের মূল্য একটি জোড় সূচকে উপস্থিত উপাদানের চেয়ে বেশি হয় এবং ফলাফলটি প্রিন্ট করা হয়।

আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি -

ইনপুট − int arr[] ={2, 1, 5, 4, 3, 7, 8}

আউটপুট − বিন্যাসের পূর্বে বিন্যাস:2 1 5 4 3 7 8 একটি বিন্যাসের পুনর্বিন্যাস যাতে প্রতিটি বিজোড় সূচীকৃত উপাদান আগের থেকে বড় হয়:1 4 2 5 3 8 7

ব্যাখ্যা − আমাদেরকে 7 আকারের একটি পূর্ণসংখ্যা অ্যারে দেওয়া হয়েছে। এখন, আমরা জোড় সূচীতে উপাদানগুলিকে বিজোড় সূচকের উপাদানগুলির সাথে অদলবদল করব যদি জোড় সূচীকৃত উপাদানগুলি বড় হয় অর্থাৎ

Arr[0] > arr[1] = call swap = {1, 2, 5, 4, 3, 7, 8}
Arr[2] > arr[3] = call swap = {1, 2, 4, 5, 3, 7, 8}
Arr[6] > arr[5] = call swap = {1, 2, 4, 5, 3, 8, 7}
Arr[2] > arr[1] = call swap = {1, 4, 2, 5, 3, 8, 7}

ইনপুট − int arr[] ={3, 2, 6, 9}

আউটপুট − বিন্যাসের পূর্বে বিন্যাস:3 2 6 9 একটি বিন্যাসের পুনর্বিন্যাস যাতে প্রতিটি বিজোড় সূচীকৃত উপাদান আগের থেকে বড় হয়:2 3 6 9

ব্যাখ্যা − আমাদের 4 আকারের একটি পূর্ণসংখ্যা অ্যারে দেওয়া হয়েছে। এখন, আমরা জোড় সূচকে উপাদানগুলিকে জোড় সূচকের উপাদানগুলির সাথে অদলবদল করব যদি জোড় সূচীকৃত উপাদানগুলি বড় হয় যেমন Arr[0]> arr[1] =call swap ={2, 3, 6, 9}। অদলবদল পদ্ধতিকে আর কল করার দরকার নেই কারণ অবস্থানের সমস্ত উপাদান শর্তগুলিকে সন্তুষ্ট করে

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • পূর্ণসংখ্যা ধরনের উপাদানগুলির একটি অ্যারে ইনপুট করুন এবং একটি অ্যারের আকার গণনা করুন৷

  • বিন্যাস করার আগে অ্যারেটি প্রিন্ট করুন এবং ফাংশনটিকে পুনর্বিন্যাস (arr, size)

    কল করুন
  • ফাংশনের ভিতরে পুনঃবিন্যাস(arr, size)

    • পূর্ণসংখ্যা টাইপের একটি ভেরিয়েবল তৈরি করুন, ধরা যাক, ptr এবং এটিকে সাইজ-1 দিয়ে সেট করুন।

    • স্টার্ট লুপ ফর, i থেকে 0 পর্যন্ত i ptr থেকে কম না হওয়া পর্যন্ত এবং i =i + 1। লুপের ভিতরে, arr[i] arr[i+1] থেকে বড় কিনা তা পরীক্ষা করুন তারপর swap(arr[i], arr[কে কল করুন। i+1])।

    • IF সাইজ এবং 1 চেক করুন তারপর i থেকে ptr পর্যন্ত i 0 এবং i =i - 2 পর্যন্ত লুপ শুরু করুন। লুপের ভিতরে, IF arr[i] arr[i - 1] এর চেয়ে বড় চেক করুন তারপর swap(arr[i] কল করুন ], arr[i-1])

  • একটি অ্যারের মান পুনর্বিন্যাস করার পরে অ্যারেটি মুদ্রণ করুন।

উদাহরণ

#include <iostream>
using namespace std;
void Rearrangement(int arr[], int size){
   int ptr = size - 1;
   for(int i = 0; i < ptr; i = i+2){
      if(arr[i] > arr[i+1]){
         swap(arr[i], arr[i+1]);
      }
   }
   if(size & 1){
      for(int i = ptr; i > 0; i = i-2){
         if(arr[i] > arr[i-1]){
            swap(arr[i], arr[i-1]);
         }
      }
   }
}
int main(){
   //input an array
   int arr[] = {2, 1, 5, 4, 3, 7, 8};
   int size = sizeof(arr) / sizeof(arr[0]);
   //print the original Array
   cout<<"Array before Arrangement: ";
   for (int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   cout<<"\nRearrangement of an array such that every odd indexed element is greater than it previous is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে

Array before Arrangement: 2 1 5 4 3 7 8
Rearrangement of an array such that every odd indexed element is greater than it previous is: 1 4 2 5 3 8 7

  1. C++ এ কাউন্ট ডিরেঞ্জমেন্ট (পরিবর্তন যাতে কোনো উপাদান তার আসল অবস্থানে উপস্থিত হয় না)

  2. C++ প্রোগ্রাম একটি অ্যারের উপাদান যোগ করার জন্য যতক্ষণ না প্রতিটি উপাদান k-এর থেকে বড় বা সমান হয়

  3. C++ প্রোগ্রাম 'k' খুঁজে বের করার জন্য যাতে প্রতিটি অ্যারের উপাদানের সাথে এর মডুলাস একই থাকে

  4. একটি অ্যারের উপাদান যোগ করা যতক্ষণ না প্রতিটি উপাদান C++ এ k এর থেকে বড় বা সমান হয়ে যায়।