আমাদের একটি পূর্ণসংখ্যা টাইপের অ্যারে দেওয়া আছে 'int arr[]' এবং একটি পূর্ণসংখ্যা টাইপের ভেরিয়েবল 'x'। কাজটি হল অ্যারেতে সকল উপাদানকে এমনভাবে পুনর্বিন্যাস করা যাতে সেগুলো একটি দেওয়া পূর্ণসংখ্যা মান 'x' দ্বারা বিভাজ্য হয় এবং সাজানোর ক্রম হবে ক্রমবর্ধমান।
বিভিন্ন ইনপুট-আউটপুট পরিস্থিতি দেখে নিই -
ইনপুট - int arr[] = {4,24, 3, 5, 7, 22, 12, 10}, int x = 2
আউটপুট - x 2-এর গুণফল যেসব অ্যারে উপাদান তাদের ক্রমবর্ধমান ক্রমে পুনর্বিন্যাস: 4 10 3 5 7 12 22 24
ব্যাখ্যা - আমাদের একটি পূর্ণসংখ্যা টাইপের অ্যারে দেওয়া আছে যার মানগুলো হল {4,24, 3, 5, 7, 22, 12, 10} এবং x-এর মান 2। এখন প্রথমে আমরা অ্যারেতে থেকে সকল উপাদান চেক করব যেগুলো ২ দ্বারা বিভাজ্য অর্থাৎ 4, 24, 22, 12, 10। এখন আমরা সকল উপাদানকে ক্রমবর্ধমান ক্রমে সাজাব অর্থাৎ 4, 10, 3, 5, 7, 12, 22, 24 যা চূড়ান্ত আউটপুট।
ইনপুট - int arr[] = {4,24, 3, 5, 7, 22, 12, 10}, int x = 3
আউটপুট - x 3-এর গুণফল যেসব অ্যারে উপাদান তাদের ক্রমবর্ধমান ক্রমে পুনর্বিন্যাস: 4 3 12 5 7 22 24 10
ব্যাখ্যা - আমাদের একটি পূর্ণসংখ্যা টাইপের অ্যারে দেওয়া আছে যার মানগুলো হল {4,24, 3, 5, 7, 22, 12, 10} এবং x-এর মান 3। এখন প্রথমে আমরা অ্যারেতে থেকে সকল উপাদান চেক করব যেগুলো ৩ দ্বারা বিভাজ্য অর্থাৎ 3, 24, 12। এখন আমরা সকল উপাদানকে ক্রমবর্ধমান ক্রমে সাজাব অর্থাৎ 4, 3, 12, 5, 7, 22, 24, 10 যা চূড়ান্ত আউটপুট।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি
- একটি পূর্ণসংখ্যা টাইপের অ্যারে ঘোষণা করুন। অ্যারের আকার গণনা করুন এবং সেটি size নামের একটি ভেরিয়েবলে সংরক্ষণ করুন। একটি পূর্ণসংখ্যা টাইপের ভেরিয়েবল 'x' ঘোষণা করুন যার বিপরীতে আমাদের অ্যারে পুনর্বিন্যাস করতে হবে।
- ডেটা Rearrange_Elements(arr, size, x) ফাংশনে পাস করুন
- Rearrange_Elements(arr, size, x) ফাংশনের ভিতরে:
- vec নামের একটি ভেরিয়েবল তৈরি করুন integer টাইপের মান সংরক্ষণ করার জন্য vector টাইপের।
- i = ০ থেকে size পর্যন্ত একটি FOR লুপ শুরু করুন। লুপের ভিতরে চেক করুন IF arr[i] % x == 0 তবে arr[i]-কে vec-এ push_back করুন
- C++ STL sort মেথড ব্যবহার করে vec অ্যারেটি সর্ট করুন যেখানে begin() এবং end() প্যারামিটার হিসেবে পাস করব।
- i = ০ থেকে size পর্যন্ত একটি FOR লুপ শুরু করুন। চেক করুন IF arr[i] % x == 0 তবে arr[i] = vec[j++] সেট করুন।
- অ্যারেটি প্রথম উপাদান থেকে শেষ উপাদান পর্যন্ত ট্র্যাভার্স করে FOR লুপ ব্যবহার করে প্রিন্ট করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void Rearrange_Elements(int arr[], int size, int x){
vector<int> vec;
int j = 0;
for(int i = 0; i < size; i++){
if(arr[i] % x == 0){
vec.push_back(arr[i]);
}
}
sort(vec.begin(), vec.end());
for (int i = 0; i < size; i++){
if(arr[i] % x == 0){
arr[i] = vec[j++];
}
}
cout<<"Rearrangement of all elements of array which are multiples of x "<<x<<" in increasing order is: ";
for(int i = 0; i < size; i++){
cout << arr[i] << " ";
}
}
int main(){
int arr[] = {4,24, 3, 5, 7, 22, 12, 10};
int x = 2;
int size = sizeof(arr) / sizeof(arr[0]);
Rearrange_Elements(arr, size, x);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি জেনারেট হবে
Rearrangement of all elements of array which are multiples of x 2 in increasing order is: 4 10 3 5 7 12 22 24