Vòng for không có bước gán khởi tạo

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

Phần đầu tức là lệnh khởi đầu vòng lặp. Bài này i, j đã là phần tử kế tiếp nên để trống là đúng.

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