কম্পিউটার টিউটোরিয়াল

C++-এ অ্যারে পুনর্বিন্যাস: arr[i] >= arr[j] যদি i সম হয় এবং arr[i] <= arr[j] যদি i বিষম হয় এবং j < i

আমাদের একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে যাতে বিষম এবং সম পূর্ণসংখ্যা মান রয়েছে। কাজটি হল অ্যারেটিকে এমনভাবে পুনর্বিন্যাস করা যাতে arr[i] arr[j]-এর চেয়ে বড় বা সমান হবে যদি arr[i]-এ থাকা মান সম হয়, এবং arr[i] arr[j]-এর চেয়ে ছোট বা সমান হবে যদি arr[i]-এ থাকা মান বিষম হয়।

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

ইনপুট - int arr[] = {5, 9, 10, 12, 32, 35, 67, 89}

আউটপুট - উপাদানগুলো পুনর্বিন্যাস করার পর অ্যারে: 12 32 10 35 9 67 5 89

ব্যাখ্যা - আমাদের একটি অ্যারে দেওয়া আছে বিষম এবং সম পূর্ণসংখ্যার সাথে। এখন আমরা arr[i] পজিশন থেকে arr[j] পজিশন পর্যন্ত ট্র্যাভার্স শুরু করব এবং চেক করব IF arr[i] সম হয় তবে নিশ্চিত করব যে arr[i] arr[j]-এর চেয়ে বড়, এবং IF arr[i] বিষম হয় তবে নিশ্চিত করব যে arr[i] arr[j]-এর চেয়ে ছোট বা সমান।

ইনপুট - int arr[] = {4, 5, 1, 2, 9, 10}

আউটপুট - উপাদানগুলো পুনর্বিন্যাস করার পর অ্যারে: 4 5 2 9 1 10

ব্যাখ্যা - আমাদের একটি অ্যারে দেওয়া আছে বিষম এবং সম পূর্ণসংখ্যার সাথে। এখন আমরা arr[i] পজিশন থেকে arr[j] পজিশন পর্যন্ত ট্র্যাভার্স শুরু করব এবং চেক করব IF arr[i] সম হয় তবে নিশ্চিত করব যে arr[i] arr[j]-এর চেয়ে বড়, এবং IF arr[i] বিষম হয় তবে নিশ্চিত করব যে arr[i] arr[j]-এর চেয়ে ছোট বা সমান।

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

  • পূর্ণসংখ্যা টাইপের একটি অ্যারে ঘোষণা করুন। অ্যারের আকার গণনা করুন size = sizeof(arr) / sizeof(arr[0])।
  • array_rearrange(arr, size) নামে একটি ফাংশন কল করুন এবং ডেটা প্যারামিটার হিসেবে পাস করুন।
    • even নামের একটি ভেরিয়েবল ঘোষণা করুন এবং সেটি even = size / 2 দিয়ে সেট করুন এবং অন্য একটি ভেরিয়েবল odd ঘোষণা করুন এবং সেটি size - even দিয়ে সেট করুন।
    • temp নামের একটি ভেরিয়েবল ঘোষণা করুন এবং সেটি odd - 1 দিয়ে সেট করুন। arr_2[] নামে একটি অ্যারে ঘোষণা করুন arr_1[]-এর আকারের।
    • i = ০ থেকে size পর্যন্ত একটি FOR লুপ শুরু করুন। লুপের ভিতরে arr_2[i] = arr[i] সেট করুন।
    • sort(arr_2, arr_2 + size) ফাংশন কল করুন।
    • i = ০ থেকে size পর্যন্ত ২-২ করে (i += 2) একটি FOR লুপ শুরু করুন। লুপের ভিতরে arr[i] = arr_2[temp] সেট করুন এবং temp ভেরিয়েবলটি ১ কমানো।
    • temp = odd সেট করুন। i = ১ থেকে size পর্যন্ত ২-২ করে (i += 2) একটি FOR লুপ শুরু করুন। লুপের ভিতরে arr[i] = arr_2[temp] সেট করুন এবং temp কে ১ বাড়ান।
    • i = ০ থেকে size পর্যন্ত একটি FOR লুপ শুরু করুন। arr[i] প্রিন্ট করুন।

উদাহরণ

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

void array_rearrange(int arr[], int size){ 
    int even = size / 2; 
    int odd = size - even; 
    int temp = odd - 1; 
    int arr_2[size]; 
    for(int i = 0; i < size; i++){ 
        arr_2[i] = arr[i]; 
    } 
    sort(arr_2, arr_2 + size); 
    for(int i = 0; i < size; i += 2){ 
        arr[i] = arr_2[temp]; 
        temp--; 
    } 
    temp = odd; 
    for(int i = 1; i < size; i += 2){ 
        arr[i] = arr_2[temp]; 
        temp++; 
    } 
    cout<<"Array after rearranging elements are: "; 
    for (int i = 0; i < size; i++){ 
        cout << arr[i] << " "; 
    } 
} 

int main(){ 
    int arr[] = {5, 9, 10, 12, 32, 35, 67, 89}; 
    int size = sizeof(arr) / sizeof(arr[0]); 
    array_rearrange(arr, size); 
    return 0; 
}

আউটপুট

উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি জেনারেট হবে

Array after rearranging elements are: 12 32 10 35 9 67 5 89
  1. অ্যারেতে a+b+c=d হওয়া সর্বোচ্চ d বের করা (C++)

  2. অ্যারেতে চারটি উপাদান a, b, c এবং d খুঁজে বের করা যাতে a+b = c+d C++-তে

  3. C++ তে অ্যারেতে জোড় ও বিজোড় ইনডেক্সের এবসোলিউট ডিফারেন্স

  4. C++-এ অ্যারেতে জোড় ও বিজোড় ইনডেক্সের উপাদানগুলোর tuyệt đối পার্থক্য