我有一个包含这样的数据列表的文件:
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
我设法设计了一个类并将数据提取到我的程序中。我现在被困在设计上:
例如:对于案例#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++;
}
}
答案 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样本数据。