Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เพื่อจัดเรียงองค์ประกอบทั้งหมดของอาร์เรย์ซึ่งเป็นทวีคูณของ x ตามลำดับที่เพิ่มขึ้น


เราได้รับอาร์เรย์ประเภทจำนวนเต็มเป็น '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