Hỏi về hàm xoá số chính phương trong mảng

Tại sao tại đoạn hàm XoaSoChinhPhuong lại là i- - ạ

void Xoa(int a[] , int &n , int vt)
{
    for(int i = vt ; i < n - 1 ; i++)
    {
        a[i] = a[i + 1];
    }
    n--;
}
void XoaSoChinhPhuong(int a[] ,int &n)
{
    for(int i = 0 ; i < n ; i++)
    {
        if(SoChinhPhuong(a[i]) == true)
        {
            Xoa(a,n,i);
            i--;
        }
    }
}

Do vị trí i hiện tại là số khác rồi.

Thực ra bài này làm chuẩn là reject các phần tử thỏa điều kiện “rồi” copy đè lên mảng cũ (thay dest[i] bằng source[i] trong code).

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