কম্পিউটার

এমনভাবে বিন্যাস পুনঃবিন্যস্ত করুন যাতে C++ এ জোড় অবস্থান বিজোড়ের চেয়ে বেশি হয়


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

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

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

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

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

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

আউটপুট − বিন্যাসের পূর্বে বিন্যাস:-3 2 -4 -1একটি বিন্যাসের পুনর্বিন্যাস যাতে জোড় অবস্থান বিজোড়ের চেয়ে বড় হয়:-4 -3 -1 2

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

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

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

  • সাজানোর ফাংশনে অ্যারের অ্যারে এবং সাইজ পাস করে C++ STL-এর সাজানোর পদ্ধতি ব্যবহার করে একটি অ্যারে সাজান।

  • একটি পূর্ণসংখ্যা ভেরিয়েবল ঘোষণা করুন এবং ফাংশন পুনর্বিন্যাস(arr, size) এ কল দিয়ে সেট করুন

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

    • একটি পূর্ণসংখ্যা টাইপ অ্যারে ঘোষণা করা যাক, ধরা যাক, অ্যারের অ্যারের একই আকারের ptr[size]

    • অস্থায়ী পূর্ণসংখ্যা টাইপ ভেরিয়েবল ঘোষণা করুন যেমন প্রথম থেকে 0 এবং শেষ থেকে আকার -1।

    • i থেকে 0 পর্যন্ত লুপ শুরু করুন যতক্ষণ না i একটি অ্যারের আকারের চেয়ে কম হয়। লুপের ভিতরে, IF (i + 1) % 2 সমান 0 চেক করুন তারপর ptr[i] কে arr[last--] সেট করুন।

    • অন্যথায়, ptr[i] সেট করুন arr[first++]।

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int* arr, int size){
   int ptr[size];
   int first = 0;
   int last = size - 1;
   for (int i = 0; i < size; i++){
      if((i + 1) % 2 == 0){
         ptr[i] = arr[last--];
      }
      else{
         ptr[i] = arr[first++];
      }
   }
}
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] << " ";
   }
   //sort an Array
   sort(arr, arr + size);
   //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 positioned are greater than odd 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 positioned are greater than odd is: 1 2 3 4 5 6 7 8

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

  2. এমনকি C++ এ অ্যারের যোগফল তৈরি করতে ন্যূনতম অপসারণ

  3. অ্যারেতে সবচেয়ে বড় ডি খুঁজুন যেমন সি++ এ a + b + c =d

  4. একটি অ্যারেতে সমস্ত জোড়া (a, b) খুঁজুন যেমন একটি % b =k C++ এ