按月份和年份将数据分类为数组的功能是汇总12月/ 1月。无法弄清楚为什么

时间:2019-04-19 01:11:50

标签: c++ arrays

我正在从CSV文件将数据接收到程序中,并且尝试按年份,然后按月份将数据分类为多维数组以从那里进一步聚合。

我每月遇到的麻烦是汇总,然后将其插入2D向量,除了12月和1月。十二月创建了自己的数组就好了,但是随后也添加了一月,所以我不知道为什么。

我一直在努力解决这个问题,直到我终于在计算出平均值之前制定出以下用于分离数据的函数,但是我决定先检查进入数组的数据,然后再运行问题。如果可以避免的话,我不想对这几个月进行硬编码。

谁能看到为什么将一月添加到十二月而不将其放入单独的向量中?

注意:这是使用自定义Vector类,因为我们不允许使用STL

void DATA::SeparateByMonth(Vector<Vector<DATA>>& byYear)
{
    long year = data[0].date.GetYear(); //initially set the year to the first found
    Vector<DATA> byMonth; //new vector to hold each month
    int j = 1; // for month counting

    for(int i = 0; i < data.length(); i++)
    {
        if(data[i].date.GetYear() == year)
        {
            if(data[i].date.GetMonth() == data[0].date.WhichMonth(j)) //WhichMonth has an array of months
            {
                byMonth.push_back(data[i]); // Add to Vector of Months
            }
            else
            {
                if(byMonth.length() > 0) //if vector contains data, add to ByYear
                {
                    byYear.push_back(byMonth); //Add vector to 2D vector
                }
                byMonth.clear(); //clear the vector to start again
                j++; //increment month
                i--; //decrement test by one to retest that value
            }
        }
        else
        {
            year = data[i].date.GetYear(); //change to the new year value
            j = 1; //set the check back to January
            i--; // decrement test by one to retest that value.
        }
    }
}

结果-2D向量中每个向量的长度

4月:4314
五月:4464
六月:4320
七月:4464
八月:4464
九月:4320
十月:4464
十一月:4315
十二月:8928 // //十二月汇总了十二月和一月,因此没有一月
2月:4032
3月:4464

0 个答案:

没有答案