c++ - 删除数组中的偶数并移动元素
问题描述
我正在尝试编写一个对偶数进行研究的代码,然后删除偶数,然后移动所有其他元素。
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 个多小时,我试图找出我的代码有什么问题。
解决方案
这似乎是某种家庭作业或学校作业。那么发布的代码的实际问题是什么?
就是当你删除 index 处的偶数时i
,你把原来在 index 处的数字i + 1
放到 indexi
中。然后继续外循环迭代,它将检查 index i + 1
,它是i + 2
数组中原始位置的数字。因此,从 开始Array[i + 1]
,现在在的数字Array[i]
永远不会被检查。
解决此问题的一种简单方法是在减量i
时减量N
。
推荐阅读
- python - 输入为空,为空
- maven - 如何从maven项目多模块和spring boot生成依赖的jar文件
- c++ - Qt - 为什么我不能将我的自定义 QGraphicsItem 转换为 QObject?
- terminal - 使用 Xyce 通过网表进行香料模拟没有输出
- python - 如何在 django ORM 中获得 python [:-1] 的等值?
- java - 将包含数组的json字符串转换为Java中的Map
- typo3 - 如何在 TYPO3 Extbase 扩展中的 for..each 中使用多种形式
- angular - Angular 7 HttpClient 发布 404
- javascript - 将 If / Else 条件转换为 for 循环?
- angular - NestJS gRPC 路由 404