เราได้รับอาร์เรย์ประเภทจำนวนเต็มเป็น '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 อันดับแรก เราจะตรวจสอบองค์ประกอบทั้งหมดจากอาร์เรย์ที่แบ่งแยกได้ โดย 2 เช่น 4, 24, 22, 12, 10 ตอนนี้เราจะจัดเรียงองค์ประกอบทั้งหมดตามลำดับที่เพิ่มขึ้นเช่น 4, 10, 3, 5, 7, 12, 22, 24 ซึ่งเป็นเอาท์พุตสุดท้าย
ป้อนข้อมูล − nt 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 เช่น 3, 24, 12 ตอนนี้เราจะจัดเรียงองค์ประกอบทั้งหมดตามลำดับที่เพิ่มขึ้นเช่น 4, 3, 12, 5, 7, 22, 24, 10 ซึ่งเป็นผลลัพธ์สุดท้าย
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ประกาศอาร์เรย์ประเภทจำนวนเต็ม คำนวณขนาดของอาร์เรย์และเก็บไว้ในตัวแปรชื่อขนาด ประกาศตัวแปรประเภทจำนวนเต็ม 'x' ซึ่งเราจำเป็นต้องจัดเรียงอาร์เรย์ใหม่
-
ส่งข้อมูลไปยังฟังก์ชัน Rearrange_Elements(arr, size, x)
-
ภายในฟังก์ชัน Rearrange_Elements(arr, size, x)
-
สร้างตัวแปรเป็น vec ของเวกเตอร์ประเภทที่เก็บค่าประเภทจำนวนเต็ม
-
เริ่มวนรอบ FOR จาก i ถึง 0 จนถึง i น้อยกว่าขนาด ภายในลูป ให้ตรวจสอบ IF arr[i] % x =0 จากนั้นกด arr[i] ไปที่ vec
-
จัดเรียงอาร์เรย์โดยใช้วิธีการจัดเรียง C++ STL โดยที่เราจะส่งผ่าน start() และ end() เป็นพารามิเตอร์ไปยังฟังก์ชัน
-
เริ่มวนรอบ FOR จาก i ถึง 0 จนถึง i น้อยกว่าขนาด ตรวจสอบว่า 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 decreasing 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 decreasing order is: 4 10 3 5 7 12 22 24