Gộp 2 mảng 1 chiều đã xếp theo chiều tăng dần lại thành 1 mảng lớn theo chiều tăng dần

#include <iostream>
using namespace std;

void tm(int n, int m,int a[1000],int b[1000])
{
    int c[2000], flagn =0, flagm = 0;
    for (int i=0; i< m+n ;i++)
    {
        if (a[flagn]<b[flagm]){
            c[i] = a[flagn];
            flagn++;
        }
        else {
            c[i] = b[flagm];
            flagm++;
        }
    }
    for (int i = 0; i < m+n ; i++)
    {
        cout << c[i] << " ";
    }
}

int main ()
{
    int n, m, a[1000], b[1000];
    cin >>n;
    cin >> m;
    for (int i = 0; i< n ; i++)
    {
        cin >> a[i];
    }
    for ( int i= 0; i < m; i++)
    {
        cin >> b[i];
    }
    tm(n , m , a, b);
    return 0 ;
}

Đầu vào:

[1,2,4],[1,2,5]

Đầu ra thực tế:

“1 0 0 0”

Đầu ra mong muốn:

"1 1 2 2 4 5 "

Bài yêu câu gộp 2 mảng 1 chiều đã xếp theo chiều tăng dần lại thành 1 mảng lớn theo chiều tăng dần nhưng mình làm vẫn ko biết lỗi chỗ nào mà kết quả ra ko được mn

do bị tràn thôi
flagn >= n hoặc flagm >=m thì sao, phần tử đó đâu có đâu mà so sánh
thay đổi điều kiện câu if để check trường hợp mảng a hoặc b đã hết là xong

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?