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

รวมสมาชิกของอาร์เรย์สองอาร์เรย์สลับกันในอาร์เรย์ที่สามด้วย C++

ข้อความโจทย์

กำหนดอาร์เรย์สองอาร์เรย์ เราต้องรวมอาร์เรย์ทั้งสองอย่างที่อาร์เรย์ที่รวมแล้วมีสมาชิกสลับกันของอาร์เรย์แรกและอาร์เรย์ที่สอง หากอาร์เรย์ใดอาร์เรย์หนึ่งมีสมาชิกเหลือ ให้ต่อท้ายที่อาร์เรย์ที่รวมแล้ว

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

อัลกอริทึม

1. ท่องผ่านทั้งสองอาร์เรย์ และนำสมาชิกทีละตัวใส่ในอาร์เรย์ผลลัพธ์
2. หากอาร์เรย์ใดอาร์เรย์หนึ่งหมด ให้นำสมาชิกที่เหลือของอีกอาร์เรย์ใส่ในอาร์เรย์ผลลัพธ์

ตัวอย่างโค้ด

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

ผลลัพธ์

เมื่อคอมไพล์และรันโปรแกรมด้านบน จะได้ผลลัพธ์ดังนี้ -

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