从一个有序数组(由小到大)中删除一个数据。如数组a={1,3,5,7,9},删除3后的a是{1,5,7,9},长度减1(不会释放数组内存)。如果要删除的数据不在数组中,数组不变。
注意:最多只删除第1个找到的数据,如果数组中有多个相同值也只删除一个,如数组a={1,3,5,5},删除5后的数组a是{1,3,5}。
【提示】查找算法找到要删除数据的位置,如果找到了,从该位置的下一个位置开始直到数组末尾,执行a[i-1] = a[i]运算,将元素前移一个位置。删除后数组长度-1。如果没有找到,数组不变。
输入格式:
第一行输入1-100的整数n;
第二行输入n个整数,用空格分隔;
第三行输入要删除的整数。
输出格式:
数组删除指定值后输出的元素,用空格分隔,若要删除的数值不存在,则输出提示信息delete fail.
输入样例1:
如:
5
1 3 5 7 9
5
输出样例1:
1 3 7 9
输入样例2:
5
11 13 15 17 19
10
输出样例2:
delete fail.
答案:
#include<iostream>
using namespace std;
int main()
{
int a[100];
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int s,flag=1;
cin>>s;
for(int i=0;i<n;i++)
{
if(a[i]==s)
{
for(i;i<n-1;i++)
{
a[i]=a[i+1];
}
flag=-1;
}
}
if(flag==1)
{
cout<<"delete fail.";
}
else
{
for(int i=0;i<n-1;i++)
cout<<a[i]<<" ";
}
return 0;
}