Xóa các phần tử trùng trong mảng 1 chiều là loại bỏ đi các phần tử có giá trị bằng nhau trong mảng, như ví dụ dưới
Mảng a[8] = {2,3,5,1,2,4,6,3};
Mảng kết quả a[6]={2,3,5,1,4,6};
Phần tử có giá trị 2 và phần tử có giá trị 3 bị trùng, nên xóa đi
Chương trình xóa các phần tử trùng trong mảng 1 chiều C/C++
#include<stdio.h> #include<conio.h> void Nhap(int a[],int N){ int i; for (i=0;i<N;i++){ printf("Nhap so thu %d",i); scanf("%d",&a[i]); } } void Xuat(int a[],int N){ int i; for (i=0;i<N;i++) printf("%d ",a[i]); printf("\n"); } void Sapxep(int a[],int N){ int i,j,t; for (i=0;i<N-1;i++) for (j=i+1;j<N;j++) if (a[i]>a[j]){ t=a[i]; a[i]=a[j]; a[j]=t; } } void Xoatrung(int a[],int *N){ int i,j,k; for (i=0;i<(*N)-1;i++){ j=i+1; while (j<*N) if (a[i]==a[j]){ for (k=j;k<(*N)-1;k++) a[k]=a[k+1]; *N=(*N)-1; } else j=j+1; } } void main(){ int a[50], N; printf("Mang co bao nhieu phan tu ? ");scanf("%d",&N); Nhap(a,N); printf("Mang vua nhap:\n"); Xuat(a,N); Xoatrung(a,&N); printf("Mang sau khi xoa phan tu trung nhau:\n"); Xuat(a,N); Sapxep(a,N); printf("Mang sau khi sap xep\n"); Xuat(a,N); getch(); }