Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ sắp xếp lại tất cả các phần tử của mảng là bội số của x theo thứ tự tăng dần

Chúng ta được cung cấp một mảng kiểu số nguyên là ‘int arr []’ và một biến kiểu số nguyên là ‘x’. Nhiệm vụ là sắp xếp lại tất cả các phần tử của một mảng sao cho chúng sẽ chia hết cho một giá trị số nguyên cho trước ‘x’ và việc sắp xếp phải theo thứ tự tăng dần.

Hãy để chúng tôi xem các kịch bản đầu ra đầu vào khác nhau cho việc này -

Đầu vào - int arr [] ={4,24, 3, 5, 7, 22, 12, 10}, int x =2

Đầu ra - Sắp xếp lại tất cả các phần tử của mảng là bội số của x 2 theo thứ tự giảm dần là:4 10 3 5 7 12 22 24

Giải thích −chúng ta được cung cấp một mảng kiểu số nguyên chứa các giá trị là {4,24, 3, 5, 7, 22, 12, 10} và x với giá trị là 2. Bây giờ, trước hết chúng ta sẽ kiểm tra tất cả các phần tử từ một mảng có chia hết không bằng 2, tức là 4, 24, 22, 12, 10. Bây giờ chúng ta sẽ sắp xếp tất cả các phần tử theo thứ tự tăng dần. e. 4, 10, 3, 5, 7, 12, 22, 24 là kết quả cuối cùng.

Đầu vào - nt arr [] ={4,24, 3, 5, 7, 22, 12, 10}, int x =3

Đầu ra - Sắp xếp lại tất cả các phần tử của mảng là bội số của x 3 theo thứ tự giảm dần là:4 3 12 5 7 22 24 10

Giải thích - chúng ta được cung cấp một mảng kiểu số nguyên chứa các giá trị là {4,24, 3, 5, 7, 22, 12, 10} và x với giá trị là 3. Bây giờ, trước tiên chúng ta sẽ kiểm tra tất cả các phần tử từ một mảng có chia hết cho 3 tức là 3, 24, 12. Bây giờ chúng ta sẽ sắp xếp tất cả các phần tử theo thứ tự tăng dần, tức là 4, 3, 12, 5, 7, 22, 24, 10 là kết quả cuối cùng.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Khai báo mảng kiểu số nguyên. Tính kích thước của một mảng và lưu trữ nó trong một biến có tên là size. Khai báo một biến kiểu số nguyên ‘x’ mà chúng ta cần sắp xếp lại một mảng.

  • Truyền dữ liệu vào hàm Rearrange_Elements (arr, size, x)

  • Bên trong hàm Rearrange_Elements (arr, size, x)

    • Tạo một biến dưới dạng vec của vectơ kiểu lưu trữ các giá trị kiểu số nguyên.

    • Bắt đầu vòng lặp FOR từ i đến 0 cho đến khi tôi nhỏ hơn kích thước. Bên trong vòng lặp, kiểm tra IF arr [i]% x =0 rồi đẩy arr [i] vào vec

    • Sắp xếp một mảng bằng cách sử dụng phương pháp sắp xếp STL của C ++ trong đó chúng ta sẽ chuyển begin () và end () làm tham số cho hàm.

    • Bắt đầu vòng lặp FOR từ i đến 0 cho đến khi tôi nhỏ hơn kích thước. Kiểm tra IF arr [i]% x =0 rồi đặt arr [i] thành vec [j ++].

    • In mảng bằng vòng lặp for bằng cách duyệt nó từ phần tử đầu tiên của mảng cho đến phần tử có sẵn cuối cùng.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

Rearrangement of all elements of array which are multiples of x 2 in decreasing order is: 4 10 3 5 7 12 22 24