Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Trộn phần tử hai mảng khác nhau lần lượt vào mảng thứ ba bằng C++


Đề bài

Cho hai mảng, chúng ta cần kết hợp hai mảng sao cho mảng kết hợp có các phần tử luân phiên của mảng đầu tiên và mảng thứ hai. Nếu một trong các mảng có phần tử thừa, thì các phần tử này nên được nối vào cuối mảng kết hợp.

arr1[] = {10, 20, 30, 40} arr2[] = {-10, -20, -30, -40} result[] = {10, -10, 20, -20, 30, -30, 40, -40}

Thuật toán

1. Duyệt cả hai mảng và lần lượt đưa phần tử vào mảng kết quả. 2. Nếu một trong hai mảng hết thì đưa các phần tử còn lại của mảng kia vào mảng kết quả.

Ví dụ

#include <iostream> #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) using namespace std; void alternateMergedArray(int *arr1, int n1, int *arr2, int n2,int *result){    int i, j, k;    i = 0;    j = 0;    k = 0;    while (i < n1 && j < n2) {       result[k] = arr1[i];       ++k;       ++i;       result[k] = arr2[j];       ++k;       ++j;    }    while (i < n1) {       result[k] = arr1[i];       ++k;       ++i;    }    while (j < n2) {       result[k] = arr2[j];       ++k;       ++j;    } } void displayArray(int *arr, int n){    for (int i = 0; i < n; ++i) {       cout << arr[i] << " ";    }    cout << endl; } int main(){    int arr1[] = {10, 20, 30, 40};    int arr2[] = {-10, -20, -30, -40};    int result[SIZE(arr1) + SIZE(arr2)];    cout << "First array: " << endl;    displayArray(arr1, SIZE(arr1));    cout << "Second array: " << endl;    displayArray(arr2, SIZE(arr2));    cout << "Result array: " << endl;    alternateMergedArray(arr1, SIZE(arr1), arr2, SIZE(arr2),result);    displayArray(result, SIZE(result));    return 0; }

Kết quả

Khi bạn biên dịch và thực thi chương trình trên. Nó tạo ra kết quả sau:

First array: 10 20 30 40 Second array: -10 -20 -30 -40 Result array: 10 -10 20 -20 30 -30 40 -40