CTDL và giải thuật - Xóa phần tử có chỉ số k
Bài tập.
Nhập vào một số nguyên dương n, và n số nguyên lần lượt là các phần tử trong dãy a. Tiếp theo nhập vào số nguyên là k (0 ≤ k < n).
Hãy xóa phần tử có chỉ số k ở trong dãy đó. In mảng kết quả ra màn hình, sau mỗi phần tử có đúng một khoảng trắng.
Ví dụ:
- Test mẫu 1:
Input Output 4
1 2 3 4
11 3 4
Vớin = 4, a = [1, 2, 3, 4], k = 1, thì kết quả mong muốn là:"1 3 4 ".
- Test mẫu 2:
Input Output 3
1 2 3
21 2
Vớin = 3, a = [1, 2, 3], k = 2, thì kết quả mong muốn là:"1 2 ".
Hướng dẫn bài tập.
Ý tưởng:
Ta thấy rằng khi xóa một phần tử trong mảng thì số phần tử trong mảng bị giảm đi 1 đơn vị, tất cả những phần tử từ chỉ số 0 đến k-1 đều giữ nguyên, các phần tử từ chỉ số k đến n-1 sẽ giảm chỉ số đi 1 đơn vị (a[i] = a[i+1]).
Chú ý: nhớ dùng vào lặp hợp lý, để không bị mất giá trị các phần tử trong mảng.

Code mẫu:
Ngôn ngữ C++:
#include<iostream>
using namespace std;
int main(){
int a[100];
int n, k;
cin >> n;
for (int i = 0; i < n; i++){
cin >> a[i];
}
cin >> k;
for (int i = k; i < n; i++){
a[i] = a[i+1];
}
n--;
for (int i = 0; i < n; i++){
cout << a[i] << " ";
}
return 0;
}

