কম্পিউটার

বিন্যাস পুনর্বিন্যাস করুন যাতে এমনকি সূচক উপাদানগুলি ছোট হয় এবং C++ এ বিজোড় সূচক উপাদানগুলি বড় হয়


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

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

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

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

ব্যাখ্যা − আমাদের ধনাত্মক এবং নেতিবাচক উভয় উপাদান সমন্বিত আকার 8 এর একটি পূর্ণসংখ্যা অ্যারে দেওয়া হয়েছে। এখন, আমরা অ্যারেটিকে এমনভাবে পুনর্বিন্যাস করব যাতে একটি জোড় অবস্থানের সমস্ত উপাদান একটি বিজোড় অবস্থানে থাকা উপাদানগুলির থেকে কম হয় এবং এই ক্রিয়াকলাপটি সম্পাদন করার পরে গঠিত অ্যারেটি হয় 1 4 2 6 3 8 5 7৷

ইনপুট − int arr[] ={10, -1, 7, -5, 6, -9}

আউটপুট − বিন্যাসের পূর্বে বিন্যাস:10 -1 7 -5 6 -9 একটি বিন্যাসের পুনর্বিন্যাস যাতে এমনকি সূচক উপাদানগুলি ছোট হয় এবং বিজোড় সূচক উপাদানগুলি বড় হয়:-1 10 -5 7 -9 6

ব্যাখ্যা − আমাদের ধনাত্মক এবং নেতিবাচক উভয় উপাদান সমন্বিত আকার 6 এর একটি পূর্ণসংখ্যা অ্যারে দেওয়া হয়েছে। এখন, আমরা অ্যারেটিকে এমনভাবে সাজাব যাতে একটি জোড় অবস্থানের সমস্ত উপাদান একটি বিজোড় অবস্থানে থাকা উপাদানগুলির থেকে কম হয় এবং এই ক্রিয়াকলাপটি সম্পাদন করার পরে গঠিত অ্যারেটি হয় -1 10 -5 7 -9 6।

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

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

  • FOR লুপ ব্যবহার করে পুনর্বিন্যাস ক্রিয়া সম্পাদন করার আগে একটি অ্যারে প্রিন্ট করুন৷

  • প্যারামিটার হিসাবে অ্যারের অ্যারে এবং সাইজ পাস করে ফাংশন পুনর্বিন্যাস (আর, আকার) এ কল করুন।

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

    • i থেকে 0 পর্যন্ত FOR লুপ শুরু করুন যতক্ষণ না আমি আকার -1-এর চেয়ে কম। লুপের ভিতরে, IF i % 2 থেকে 0 চেক করুন তারপর IF arr[i] arr[i + 1] এর চেয়ে বড় চেক করুন তারপর সাজানোর জন্য arr[i] এবং arr[i + 1] পাস করে C++ STL-এর সোয়াপ পদ্ধতিতে কল করুন। পদ্ধতি।

    • এখন, IF i % 2 0 এর সমান না হলে চেক করুন তারপর IF arr[i] arr[i + 1] থেকে কম চেক করুন তারপর পদ্ধতিতে arr[i] এবং arr[i + 1] পাস করে STL-এর swap মেথড কল করুন।

  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include <iostream>
using namespace std;
void Rearrangement(int* arr, int size){
   for(int i = 0; i < size - 1; i++){
      if(i % 2 == 0 ){
         if(arr[i] > arr[i + 1]){
            swap(arr[i], arr[i + 1]);
         }
      }
      if(i % 2 != 0){
         if(arr[i] < arr[i + 1]){
            swap(arr[i], arr[i + 1]);
         }
      }
   }
}
int main(){
   //input an array
   int arr[] = {2, 1, 4, 3, 6, 5, 8, 7};
   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 even index elements are smaller and odd index elements are greater is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

আউটপুট

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

Array before Arrangement: 2 1 4 3 6 5 8 7
Rearrangement of an array such that even index elements are smaller and odd index elements are greater is: 1 4 2 6 3 8 5 7

  1. বৃত্তাকার অ্যারেতে সর্বাধিক যোগফল যাতে C++ এ দুটি উপাদান সংলগ্ন থাকে না

  2. একটি অ্যারে উপাদান খুঁজুন যাতে সমস্ত উপাদান এটি দ্বারা c++ ব্যবহার করে বিভাজ্য হয়

  3. C++ এ একটি অ্যারেতে জোড় এবং বিজোড় সূচীকৃত উপাদানের পরম পার্থক্য?

  4. একটি অ্যারে (C++) এ জোড় এবং বিজোড় সূচীকৃত উপাদানের পরম পার্থক্য?