首页 > 解决方案 > 删除数组中的偶数并移动元素

问题描述

我正在尝试编写一个对偶数进行研究的代码,然后删除偶数,然后移动所有其他元素。

i是偏移量,是数组中元素的实际位置。

k是偶数在数组中的位置。

int k;
for(i=0; i < N; i++)
{
    if(Array[i] % 2 == 0)
    {
       for(k=i+1; k < N; k++)
       {
            Array[k-1] = Array[k];
       }
       N--;
    }
}

Array=[2,10,3,5,8,7,3,3,7,10]偶数应该被删除,但 10 留在Array=[10,3,5,7,3,3 ,7]。

现在是 3 个多小时,我试图找出我的代码有什么问题。

标签: c++arraysshift

解决方案


这似乎是某种家庭作业或学校作业。那么发布的代码的实际问题是什么?

就是当你删除 index 处的偶数时i,你把原来在 index 处的数字i + 1放到 indexi中。然后继续外循环迭代,它将检查 index i + 1,它是i + 2数组中原始位置的数字。因此,从 开始Array[i + 1],现在在的数字Array[i]永远不会被检查。

解决此问题的一种简单方法是在减量i时减量N


推荐阅读