设计一个带数组的类

时间:2016-02-19 04:51:11

标签: c++

我有一个包含这样的数据列表的文件:

  

2012-01-01 Rain 7 13 0.28

     

2012-01-02 ScatteredClouds 4 8 0.25

     

2012-01-03 Rain 6 12 0.28

     

2012-01-04 Rain 5 10 0.28

     

2012-01-05 Rain 7 12 0.28

我设法设计了一个类并将数据提取到我的程序中。我现在被困在设计上:

  1. 如何查找第3列数据的总和
  2. 如何将年份与其他数据相匹配。
  3. 例如:对于案例#2 - 我想在2012年找到“Rain”的出现次数。

    P.S:我刚刚开始学习编程,如果答案很明显,那就很抱歉。

    这是我的代码:

    const int SIZE = 2000;
    
    class City
    {
     public:
        string date;
        string weatherDesc;
        int minTemp;
        int maxTemp;
        double rainfall;
    };
    
    int main( )
    {
    
        City london[SIZE];
    
        ifstream fin;
        fin.open("weather.txt");
    
        int i = 0;
        while ((! fin.eof( )) && (i < SIZE))
        {
            fin >> london[i].date
                >> london[i].weatherDesc
                >> london[i].minTemp
                >> london[i].maxTemp
                >> london[i].rainfall;
            cout << london[i].date << " "
                 << london[i].weatherDesc << " "
                 << london[i].minTemp << " "
                 << london[i].maxTemp << " "
                 << london[i].rainfall << endl;
            i++;
        }
    }
    

1 个答案:

答案 0 :(得分:0)

您可以简单地检查数组中的每个元素,看看每个城市是否符合所需条件。

int weatherDescCount(City cities[], int count, string year, string desc)
{
    int num = 0;

    for (int i = 0; i < count; i++)
    {
        if (cities[i].weatherDesc == desc &&
            cities[i].date.substr(0, 4) == year) {
            num++;
        }
    }
    return num;
}

int sumMinTemp(City cities[], int count)
{
    int sum = 0;

    for (int i = 0; i < count; i++)
    {
        sum += cities[i].minTemp;
    }
    return sum;
}

在main()的末尾,添加以下代码:

cout << sumMinTemp(london, i) << endl;
cout << weatherDescCount(london, i, "2012", "Rain") << endl;

按照预期,它会打印29和4样本数据。