You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于遍历数组元素计算及读取TXT数据存入二维数组的技术问询

遍历二维读数数组的实用方案

嘿,你已经把6480条读数规整到float readings[90][72]这个二维数组里了对吧?遍历计算其实就用你存数据时的嵌套循环逻辑就行,给你几个贴合你场景的实用方案:

基础遍历(按天→按每日读数)

这是和你存储数据完全对应的顺序,最容易理解,适合做按天维度的计算(比如每天的平均值、极值)。直接复用你写的循环结构,在内部加入计算逻辑即可:

// 初始化计算用的变量
float daily_avg[90] = {0.0}; // 存储每天的平均值
float total_sum = 0.0;       // 所有读数的总和
const int TOTAL_DAYS = 90;
const int READS_PER_DAY = 72;

// 遍历每一天
for (int days = 0; days < TOTAL_DAYS; days++) {
    float day_sum = 0.0;
    float day_max = -INFINITY;
    float day_min = INFINITY;
    
    // 遍历当天的72条读数
    for (int rperday = 0; rperday < READS_PER_DAY; rperday++) {
        float current_reading = readings[days][rperday];
        
        // 示例1:累加当天总和,用于计算日平均
        day_sum += current_reading;
        // 示例2:累加所有读数总和,用于计算整体平均
        total_sum += current_reading;
        // 示例3:统计当天的最大值和最小值
        if (current_reading > day_max) day_max = current_reading;
        if (current_reading < day_min) day_min = current_reading;
        
        // 如果你需要做单条读数的特殊处理(比如阈值告警)
        if (current_reading > 100.0) {
            printf("Day %d, Reading %d exceeds threshold: %.2f\n", days+1, rperday+1, current_reading);
        }
    }
    
    // 计算并打印当天的统计结果
    daily_avg[days] = day_sum / READS_PER_DAY;
    printf("Day %d | Avg: %.2f | Max: %.2f | Min: %.2f\n", days+1, daily_avg[days], day_max, day_min);
}

// 计算并打印整体统计结果
float overall_avg = total_sum / (TOTAL_DAYS * READS_PER_DAY);
printf("\nOverall average across 90 days: %.2f\n", overall_avg);

反向遍历(按读数时段→按天)

如果你的需求是不按天分组,而是按同一时段的跨天数据计算(比如每天第1条读数的趋势),可以调换循环顺序:

const int TOTAL_DAYS = 90;
const int READS_PER_DAY = 72;

// 遍历每个时段的读数位置
for (int rperday = 0; rperday < READS_PER_DAY; rperday++) {
    float slot_sum = 0.0;
    // 遍历所有天的该时段读数
    for (int days = 0; days < TOTAL_DAYS; days++) {
        slot_sum += readings[days][rperday];
    }
    // 计算该时段的90天平均
    float slot_avg = slot_sum / TOTAL_DAYS;
    printf("Slot %d average across 90 days: %.2f\n", rperday+1, slot_avg);
}

小提示

  • 数组索引从0开始,所以打印时加1(比如days+1)会让输出更符合日常的“第1天”“第1条读数”的表述
  • 如果需要处理大量计算,可以把数组定义为static或者放在堆上,避免栈溢出
  • 计算极值时记得初始化day_max为极小值、day_min为极大值(比如用-INFINITY和INFINITY,需要包含math.h头文件)

内容的提问来源于stack exchange,提问作者D3FTY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:29:08