Đề bài yêu cầu em xóa mọi số 0 trong mảng, chương trình em vẫn chạy được nhưng khi trong mảng có nhiều số 0 quá thì nó không xóa hết được, xem giúp em với:
PHP Code:
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
void nhapmang(int a[],int n);
void xuatmang(int a[],int n);
int timmax(int a[],int n);
int timmin(int a[],int n);
int demso0(int a[],int n);
void saptang(int a[],int n);
void sapgiam(int a[],int n);
int doixung(int a[],int n);// kieu int do no tra ve ok gia tri 0 va 1
int ktsnt(int k);
void insnt(int a[],int n);
void xoa(int a[],int &n,int k);
void chen(int a[],int &n,int k,int s);
void xoapt0(int a[],int &n);
void main()
{
int a[10],n,max,min,dem,k,s;
printf("\nnhap so phan tu mang n:");
scanf("%d",&n);
nhapmang(a,n);
printf("\nxuat mang n:");
xuatmang(a,n);
xoapt0(a,n);
printf("\nXoa phan tu 0 cua mang:");
xuatmang(a,n);
}
void nhapmang(int a[],int n)
{
for(int i=0;i<n;i++)
{
printf("nhap a[%d]=",i);
scanf("%d",&a[i]);
}
}
void xuatmang(int a[],int n)
{
for(int i=0;i<n;i++)
printf("%d ",a[i]);
}
int timmax(int a[],int n)
{
int max=a[0];
for(int i=0;i<n;i++)
if(a[i]>max)
max=a[i];
return max;
}
int timmin(int a[],int n)
{
int min=a[0];
for(int i=0;i<n;i++)
if(min>a[i])
min=a[i];
return min;
}
int demso0(int a[],int n)
{
int dem=0;
for(int i=0;i<n;i++)
if(a[i]==0)
dem++;
return dem;
}
void saptang(int a[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
void sapgiam(int a[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
int doixung(int a[],int n)
{
int ok=1;
for(int i=0;i<n/2;i++)
if(a[i]!=a[n-i-1])
{
ok=0;break;
}
return ok;
}
int ktsnt(int k)
{
int i,ok;
ok=0;
if(k>=2);
{
for(i=2;i<k;i++)
if(k%i==0)break;
if(k==i) ok=1;
}
return ok;
}
void insnt(int a[],int n)
{
for(int i=0;i<n;i++)
if(ktsnt(a[i]))
printf("\nsnt la a[%d]=%d",i,a[i]);
}
void xoa(int a[],int &n, int k)
{
if(n>0&&k<n&&k>=0)
for(int i=k;i<n-1;i++)
a[i]=a[i+1];
n--;
}
void chen(int a[],int &n,int k,int s)
{
if(k<0) k=0;
if(k>n) k=n;
for(int i=n-1;i>=k;i--)
a[i+1]=a[i];
a[k]=s;
n++;
}
void xoapt0(int a[],int &n)
{
for(int i=0;i<n;i++)
{
if(a[i]==0)
xoa(a,n,i);
}
}
Comment