首页 > 解决方案 > 如何从数组中删除奇数

问题描述

看起来每次数组中有连续的奇数三行。中间的一个不会被删除。我明白为什么会这样,但我不太确定如何解决它。

这是针对 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

标签: c++

解决方案


问题是你总是在推进你的索引,即使你删除了一个奇数。因此,如果有两个奇数,则删除第一个并将索引移过第二个。要解决此问题,请在删除奇数时再次减小索引。所以在这之后:

count++;

也放这个:

i--;

你得到的输出是:

2 6 8


推荐阅读