设计带有数组的类

Designing a class with array

本文关键字:数组      更新时间:2023-10-16

我有一个文件,其中包含如下数据列表:

2012-01-01 雨 7 13 0.28

2012-01-02 散云 4 8 0.25

2012-01-03 雨 6 12 0.28

2012-01-04 雨 5 10 0.28

2012-01-05 雨 7 12 0.28


我已经设法设计了一个类并将数据提取到我的程序中。我现在坚持设计:

  1. 如何查找第 3 列数据的总和
  2. 如何将年份与其他数据匹配。

例如:对于案例 #2 - 我想查找 2012 年"雨"的出现次数。

PS:我刚开始学习编程,对不起,如果答案很明显。

这是我的代码:

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++;
    }
}

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

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 和示例数据。