c++ - 如何从数组中删除奇数
问题描述
看起来每次数组中有连续的奇数三行。中间的一个不会被删除。我明白为什么会这样,但我不太确定如何解决它。
这是针对 C++ 的。
#include <iostream>
using namespace std;
void removeodd(int arr[],int& number)//{1,2,3,6,7,9,5,8};
{int count=0;
for(int i=0; i<number; i++)
{
if(arr[i]%2!=0)
{
int j=i+1;
for(int k=i;k<number; k++)
{
arr[k]=arr[j];
j++;
}
count++;
}
}
number=number-count;
for(int i=0; i<number; i++){
cout<<arr[i]<<" ";
}
}
int main(){
int size=8;
int ary[8]={1,2,3,6,7,9,5,8};
removeodd(ary, size);
return 0;
}
output of the code above is 2 6 9 8
解决方案
问题是你总是在推进你的索引,即使你删除了一个奇数。因此,如果有两个奇数,则删除第一个并将索引移过第二个。要解决此问题,请在删除奇数时再次减小索引。所以在这之后:
count++;
也放这个:
i--;
你得到的输出是:
2 6 8
推荐阅读
- bokeh - Bokeh/Python:CustomJS 修改列布局
- c++ - 在 c++20 中使用删除的默认构造函数初始化聚合
- rx-java - 如何跳过错误并继续处理流
- sql - 以下场景如何使用分区
- javascript - “documentRef”不是在更新字段时显示的有效 DocumentReference
- python - 如何使用 Django 和 REST 框架按共同值进行分页?
- r - 尝试拟合多元线性回归模型时 Predict() 函数的问题
- python-3.x - tkinter:为什么这个可移动标签在我不移动时会移动?
- css - 当给定显示:块时,是什么使按钮不会增长到 100% 宽度?
- amp-html - 在另一个动画之后触发动画