-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathtemperature.cpp
More file actions
69 lines (59 loc) · 1.83 KB
/
temperature.cpp
File metadata and controls
69 lines (59 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
class Measurement {
private:
double value;
string date;
public:
Measurement(double v, const string &d) : value(v), date(d) {}
double getValue() const { return value; }
string getDate() const { return date; }
};
vector<Measurement> readMeasurements(const string &filename) {
vector<Measurement> measurements;
ifstream file(filename);
if (!file.is_open()) {
cerr << "Error opening file: " << filename << endl;
return measurements;
}
string line;
unsigned int lineNumber = 0;
while (getline(file, line)) {
lineNumber++;
if (lineNumber < 5)
continue; // Skip header lines
//cout << "Line " << lineNumber << ": " << line << endl;
stringstream ss(line);
string date, temp;
if (!getline(ss, date, ',')) {
cerr << "Error parsing date on line " << lineNumber << endl;
}
if (!getline(ss, temp, ',')) {
cerr << "Error parsing temp on line " << lineNumber << endl;
}
//cout << "Line " << lineNumber << ": " << date << " " << temp << endl;
double temperature = stod(temp);
Measurement m(temperature, date);
measurements.push_back(m);
}
return measurements;
}
double averageTemperature(const vector<Measurement> &measurements) {
double sum = 0.0;
for (const Measurement &m : measurements) {
sum += m.getValue();
}
return measurements.empty() ? 0.0 : sum / measurements.size();
}
int main() {
string filename = "open-meteo-4.82N75.72W1410m.csv";
vector<Measurement> measurements = readMeasurements(filename);
cout << "Total measurements read: " << measurements.size() << endl;
cout << "Memory by Measurment: " << sizeof(Measurement) << endl;
cout << "Average temperature: " << averageTemperature(measurements) << endl;
return 0;
}