-
Notifications
You must be signed in to change notification settings - Fork 0
/
TestDateTree.cpp
201 lines (169 loc) · 5.98 KB
/
TestDateTree.cpp
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
#include <iostream>
#include "Bstx.h"
#include "Date.h"
#include <fstream>
#include <sstream>
const string INPUT_FILENAME = "data/data_source.txt";// input file ___location and name of file
const string OUTPUT_FILENAME = "data/WindTempSolar.csv"; // output file ___location and name of file
void print(Date &d)
{
cout<< d<<endl;
}
int main ()
{
// Bst<Date> DateTree;
//
//
// Date d1(26,8,2014);
// Date d2(23,7,2014);
// Date d3(25,1,2013);
// Date d4(10,1,1994);
// DateTree.insertNode(d1);
// DateTree.insertNode(d2);
// DateTree.insertNode(d3);
// DateTree.insertNode(d4);
// DateTree.preOrder();
// DateTree.postOrder();
// DateTree.inOrder();
Bstx<Date> dateTree;
ifstream inputfile(INPUT_FILENAME.c_str());// read into a file & gets the constant declared file name
string x; // string declared to get a line string file name
Date d;
while (getline(inputfile,x)) // get one line in file
{
x = "data/" + x; // add to the front of the file, data/ indicative of ___location to read at
cout << x << endl;
ifstream anotherfile(x.c_str());
if(anotherfile.rdstate() == 0) // read state 0 means ready to be read;
{
cout << "file ready.. reading file..." << endl;
string data;
int trackerpost = 0;
int counter = 0;
int trackerpossr = 0;// position of Solar Radiation
int trackposwast =0; // position of WAST in data
int trackposspeed = 0; // position of WindSpeed
int trackercounter = 0; // count to limit of column values
int checker =0;
int numofinputdata = 0;
string header;
string txt;
getline(anotherfile, header);
stringstream mystream(header);
bool checkerx = true;
while (getline(mystream, txt, ','))
{
if (txt == "WAST")
{
trackposwast = trackercounter;
}
if (txt == "S")
{
trackposspeed = trackercounter;
}
if (txt == "T")
{
trackerpost = trackercounter;
}
if (txt == "SR")
{
trackerpossr = trackercounter;
}
trackercounter++;
}
///////////////// read header file //////////////////////////////////////////////////////////
string values;
while(getline(anotherfile,data)) // get data of whole line;
{
if(!data.empty())
{
// cout << data << endl;
checker++;
stringstream myvalues(data);
getline(myvalues,values,' ');
stringstream date(values);
string datesplit;
getline(date,datesplit,'/'); // day
int day = stoi(datesplit);
getline(date,datesplit,'/'); // month
int month = stoi(datesplit);
getline(date,datesplit,'/'); // year
int year = stoi(datesplit);
getline(myvalues, values, ','); // time
string time = values;
d.SetDay(day);
d.SetMonth(month);
d.SetYear(year);
float windspeed = 0.0;
float temperature = 0.0;
float SolarRadiation = 0.0;
counter = 1;
while( counter <= trackercounter)
{
getline(myvalues,values,',');
if(counter == trackposspeed)
{
if (values == "N/A" || values.empty())
{
checkerx = false; // false data
}
else
windspeed = stof(values); // WindSpeed data
}
if(counter == trackerpost)
{
if (values == "N/A" || values.empty())
{
checkerx = false; // false data
}
else
temperature = stof(values); // Temperature data
}
if(counter == trackerpossr) // SolarRadiation data
{
if (values == "N/A" || values.empty())
{
checkerx = false; // false data
}
else
SolarRadiation = stof(values);
}
counter++; // count to end of data while extracting windspeed
}
}
else
checkerx = false;
if (checkerx == true)
{
dateTree.insertNode(d);
}
else
{
checkerx = true;
}
// temp.SetTemperature(temperature);
//
// ws.SetWindSpeed(windspeed);
//
// t.SetTime(time);
//
// srx.SetSolarRadiation(SolarRadiation);
// SensorRecords sr(d,srx,ws,temp,t);
//
// datas.add(sr);
numofinputdata ++;
counter = 0; // reset counter
} // end while loop
}
else
{
cerr << "File " << x << " cannot be read !" << endl;
}
}
dateTree.inOrder(print);
cout << "after delete " << endl;
dateTree.deleteBST();
dateTree.inOrder(print);
// dateTree.inOrder(print);
return 0;
}