谁帮我改下删除数字的程序!
目的:从输入的一组数字中删除指定的数字后再显示删除后的数字问题:当删除连续的数字,如1,2,3,4,2,删除2,显示1,3,4 这个是正确的,但是1,2,2,2,2,删除2,显示的是1,2。请帮指点下那里出问题了,谢谢!我感觉是输出函数i<=MAX-m;范围有问题,但改成i<MAX-m;还是有问题!
include <iostream>
#include <iomanip>
#include <cstdio>
#define MAX 5
int flag=0,m=0;
using namespace std;
void read(int dt[])
{
int i;
cout<<"please enter data:\n";
for(i=0;i<MAX;i++)
cin>>dt[i];
}
void delet(int dt[],int del)
{ int i,j;
for(i=0;i<MAX;i++)
{
if(del==dt[i])
{ flag=1;
++m;
for(j=i;j<MAX-m;j++)
dt[j]=dt[j+1];
}
continue;
cout<<"\ndeleted ok!";
}
if(flag==0)
cout<<"NO found!";
}
void list (int dt[])
{ int i;
if(flag==0)
for(i=0;i<MAX;i++)
cout<<setw(5)<<dt[i];
else
for(i=0;i<MAX-m;i++)
cout<<setw(5)<<dt[i];
}
int main()
{ int data[MAX],del;
read(data);
cout<<"Org data:\n";
list(data);
cout<<"\nplease input delete data:\n";
cin>>del;
delet(data,del);
cout<<"\ndata after delete: \n";
list(data);
system("pause");
return 0;
} [/font]