// duyệt vòng lặp mảng a để bỏ hết các phần tử còn lại
for(; i < n; i++)
{
c[k] = a[i];
k++;
}
// duyệt vòng lặp mảng b để bỏ hết các phần tử còn lại
for(; j < m; j++)
{
c[k] = b[j];
k++;
}
Em đọc code thì nó có dòng như thế này, thế là sao ạ?. Mọi người giải thích cho em với, em cảm ơn. Đề: Trộn 2 mảng lại với nhau thành mảng thứ 3 theo thứ tự tăng dần (không sắp xếp).Code đầy đủ:
#include<iostream>
using namespace std;
// hàm nhập mảng
void Nhap_Mang(int a[], int n)
{
for(int i = 0; i < n; i++)
{
cout << "\nNhap phan tu thu " << i << ": ";
cin >> a[i];
}
}
// hàm xuất mảng
void Xuat_Mang(int a[], int n)
{
for(int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
}
// hàm có tác dụng trộn 2 mảng a, b vào mảng c - đảm bảo tính tăng dần
void Xu_Li(int a[], int b[], int c[], int n, int m, int &k)
{
int i = 0; // chỉ số của mảng a
int j = 0; // chỉ số của mảng b
while((i < n) && (j < m))
{
if(a[i] < b[j])
{
c[k] = a[i];
k++; // số lượng phần tử mảng c tăng lên 1
i++; // chỉ số mảng a tăng lên - để tiếp tục lấy phần tử kế tiếp so sánh với b[j]
}
else // <=> if(a[i] >= b[j])
{
c[k] = b[j];
k++; // số lượng phần tử mảng c tăng lên 1
j++; // chỉ số mảng b tăng lên - để tiếp tục lấy phần tử kế tiếp so sánh với a[i]
}
}
// duyệt vòng lặp mảng a để bỏ hết các phần tử còn lại
for(; i < n; i++)
{
c[k] = a[i];
k++;
}
// duyệt vòng lặp mảng b để bỏ hết các phần tử còn lại
for(; j < m; j++)
{
c[k] = b[j];
k++;
}
}
int main()
{
int a[100];
int b[100];
int c[200];
int n; // số lượng phần tử mảng a
int m; // số lượng phần tử mảng b
int k = 0;// số lượng phần tử mảng c
// nhập số lượng phần tử mảng a
do
{
cout << "\nNhap so luong phan tu mang a: ";
cin >> n;
if(n <= 0 || n > 100)
{
cout << "\nSo luong phan tu khong hop le. Xin kiem tra lai";
}
}while(n <= 0 || n > 100);
cout << "\n\n\t\t NHAP MANG A\n";
Nhap_Mang(a, n);
cout << "\n\n\t\t MANG A\n";
Xuat_Mang(a, n);
// nhập số lượng phần tử mảng b
do
{
cout << "\nNhap so luong phan tu mang b: ";
cin >> m;
if(m <= 0 || m > 100)
{
cout << "\nSo luong phan tu khong hop le. Xin kiem tra lai";
}
}while(m <= 0 || m > 100);
cout << "\n\n\t\t NHAP MANG B\n";
Nhap_Mang(b, m);
cout << "\n\n\t\t MANG B\n";
Xuat_Mang(b, m);
// gọi hàm xử lí
Xu_Li(a, b, c, n , m, k);
cout << "\n\n\t\t MANG C SAU KHI TRON 2 MANG A VA B\n";
Xuat_Mang(c, k);
system("pause");
return 0;
}