Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用数组设计类_C++ - Fatal编程技术网

C++ 用数组设计类

C++ 用数组设计类,c++,C++,我有一个包含如下数据列表的文件: 2012-01-01降雨7130.28 2012-01-02散射云4 8 0.25 2012-01-03降雨6120.28 2012-01-04降雨5100.28 2012-01-05降雨7120.28 我已经设法设计了一个类,并将数据提取到我的程序中。我现在被困在设计上: 如何找到第三列数据的总和 如何将年份与其他数据进行匹配 例:对于案例2,我想找出2012年“雨”的发生次数 附言:我刚开始学习编程,如果答案显而易见,我很抱歉 这是我的密码: const

我有一个包含如下数据列表的文件:

2012-01-01降雨7130.28

2012-01-02散射云4 8 0.25

2012-01-03降雨6120.28

2012-01-04降雨5100.28

2012-01-05降雨7120.28


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

  • 如何找到第三列数据的总和
  • 如何将年份与其他数据进行匹配 例:对于案例2,我想找出2012年“雨”的发生次数

    附言:我刚开始学习编程,如果答案显而易见,我很抱歉

    这是我的密码:

    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++;
        }
    }
    
    const int SIZE=2000;
    阶级城市
    {
    公众:
    字符串日期;
    字符串weatherDesc;
    int minTemp;
    int-maxTemp;
    双倍降雨;
    };
    int main()
    {
    伦敦金融城[规模];
    流鳍;
    财务公开(“weather.txt”);
    int i=0;
    而((!fin.eof())&&(i>伦敦[i].日期
    >>伦敦[i].weatherDesc
    >>伦敦[i].minTemp
    >>伦敦[i].maxTemp
    >>伦敦[i].降雨;
    
    cout您可以简单地检查数组中的每个元素,看看每个城市是否满足所需条件

    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;
    }
    
    int weatherDescCount(城市[],int count,字符串年份,字符串desc)
    {
    int num=0;
    for(int i=0;i
    在main()的末尾,添加以下代码:

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

    cout这将是学习一个重要编程原则的好时机:尽可能独立地开发新功能。您想迭代数组并总结一些东西,所以请尝试使用
    int[]
    。在您尝试使用这种复杂类型之前,请让它完美工作。对于#2,您需要更好地定义您要做的事情。在2012年计算“雨”数?计算“雨”在任何给定年份?统计任何给定的
    weatherDesc
    在2012年的出现次数?统计所有字段上与通用布尔方程匹配的城市?按年份过滤数组?…顺便说一句,最好使用std::vector而不是固定大小的数组。