c - 如何使用 C 中的条件测试从数组中删除某些元素?

标签 c arrays

我正在编写一个程序,该程序遍历整数数组并计算标准差以识别数据中的异常值。从这里,我想创建一个新数组,并删除已识别的异常值,以便重新计算平均值和标准差。有什么办法可以做到这一点吗?

最佳答案

这个问题有一个非常简单的解决方案,涉及在 if 语句中转换你的思维方式(它似乎实际上并不在 for 循环中......可能想要解决这个问题)。

float dataMinusOutliers[n];
int indexTracker = 0;
for (i=0; i<n; i++) {
    if (data[i] >= (-2*stdevfinal) && data[i] <= (2*stdevfinal)) {

        dataMinusOutliers[indexTracker] = data[i];
        indexTracker += 1;
    }
}

请注意,这并不是特别可扩展,并且 dataMinusOutliers 数组可能会有相当多未使用的索引。您始终可以使用 indexTracker - 1 来记录数组的实际大小,并创建另一个数组,将 dataMinusOutliers 中的重要值复制到其中。是否有更优雅的解决方案?是的。考虑到您的要求,这是否有效?是的。

关于c - 如何使用 C 中的条件测试从数组中删除某些元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40475679/

相关文章:

c - 如何将整数赋给指针数据?

c - 即使程序中止,如何强制 gcov 提取数据

javascript - 迭代过程的嵌套过滤 - 指数映射?

arrays - Perl 读取文件并拆分为数组

ios - 如何使用键值将数组与字典分组。

php - 将 SQL 查询传递给 Google map 的 JS 数组

c# - 在 C# 中搜索字节数组中的最长模式

c - 服务器在处理完一个请求后立即终止

java - 枚举具有 N 个元素的一维数组的所有 k 分区?

c - 按 block 填充字符数组