Em có bài tập về mảng một chiều:
Xóa các phần tử giống nhau trong mảng, để mảng chỉ gồm những phần tử phân biệt.
Em đã làm, nhưng kết quả ra sai.
Đây là toàn bộ code chương trình:
#include<stdio.h>
#include<conio.h>
#include<math.h>
void nhapmang(int a[],int n)
{
for(int i=0;i<n;i++)
{
printf(" Phan tu a[%d]: ",i);
scanf("%d",&a[i]);
}
}
void xuatmang(int a[],int n)
{
printf("Cac ban tu vua nhap la: ");
for(int i=0;i<n;i++)
{
printf("%3d",a[i]);
}
}
int demsoluongphantu(int a[],int n,int giatrixoa)
{
int dem=0;
for(int i=0;i<n;i++)
{
if(a[i]==giatrixoa)
{
dem++;
}
}
return dem;
}
int vitri(int a[],int n,int giatrixoa,int vitritim)
{
int i;
vitritim=2;
int dem=0;
for(i=0;i<n;i++)
{
if(a[i]==giatrixoa)
{
dem++;
}
if(dem==vitritim)
{
return i;
}
}
}
void thoaman(int a[],int &n,int giatrixoa,int vitritim)
{
int k;
vitritim =2;
int m=vitri(a,n,giatrixoa,vitritim);
for(int i=m;i<n;i++)
{
for(int j=m+1;j<n;j++)
{
if(a[i]==giatrixoa && a[j]!=giatrixoa)
{
k=a[i];
a[i]=a[i+1];
a[i+1]=k;
}
}
}
for(int i=m;i<n;i++)
{
for(int j=m+1;j<n;j++)
{
if(a[i]==giatrixoa && a[j]!=giatrixoa)
{
k=a[i];
a[i]=a[i+1];
a[i+1]=k;
}
}
}
n=n-demsoluongphantu(a,n,giatrixoa);
}
int main()
{
int a[50],n,giatrixoa;
int vitritim=2;
do
{
printf("\n Nhap so luong phan tu: ");
scanf("%d",&n);
if(n<=0)
printf(" Nhap n duong!");
}
while(n<=0);
nhapmang(a,n);
xuatmang(a,n);
printf("\nNhap gia xoa: ");
scanf("%d",&giatrixoa);
thoaman(a,n,giatrixoa,vitritim);
xuatmang(a,n);
getch();
return 0;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?