Bài toán
Người dùng nhập mảng có chứa phần tử trùng lặp. Viết chương trình xóa các phần tử trùng, chỉ giữ lại giá trị duy nhất.
Ví dụ: Input: 12, 30, 12, 45, 67, 30 → Output: 12, 30, 45, 67.
Chương trình
#include <stdio.h>
#define MAX 100
int main() {
int array[MAX];
int size, i, j, k;
printf("Nhap kich thuoc mang: ");
scanf("%d", &size);
printf("Nhap cac phan tu: ");
for (i = 0; i < size; i++)
scanf("%d", &array[i]);
// Tìm và xóa phần tử trùng
for (i = 0; i < size; i++) {
for (j = i + 1; j < size; j++) {
if (array[i] == array[j]) {
// Dịch chuyển các phần tử sau j lên một vị trí
for (k = j; k < size; k++)
array[k] = array[k + 1];
size--; // giảm kích thước mảng
j--; // kiểm tra lại vị trí j sau khi dịch
}
}
}
printf("\nMang sau khi xoa trung: ");
for (i = 0; i < size; i++)
printf("%d\t", array[i]);
return 0;
}
Kết quả
Nhap kich thuoc mang: 10 Nhap cac phan tu: 23 12 34 56 23 12 56 78 45 56 Mang sau khi xoa trung: 23 12 34 56 78 45