-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmDataType.cpp
More file actions
86 lines (76 loc) · 1.89 KB
/
mDataType.cpp
File metadata and controls
86 lines (76 loc) · 1.89 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include "mDataType.hpp"
int nextDay(int &day) {
if (day == 630) day = 701;
else if (day == 731) day = 801;
else if (day == 831) day = 901;
else ++day;
return day;
}
int nextDays(int &day, int len) {
for (int i = 0; i < len; ++i) {
nextDay(day);
}
return day;
}
int nextDays_n(int day, int len) {
for (int i = 0; i < len; ++i) {
nextDay(day);
}
return day;
}
int passDays(int endDate, int startDate) {
if (endDate < startDate) return -1;
int passDays = 1;
while (endDate != startDate) {
nextDay(startDate);
++passDays;
}
return passDays;
}
std::string printDay(int day) {
std::string a = std::to_string(day / 100), b = std::to_string(day % 100);
if (a.length() == 1) a = "0" + a;
if (b.length() == 1) b = "0" + b;
return a + "-" + b;
}
std::string printTime(int time) {
std::string a = std::to_string(time / 100), b = std::to_string(time % 100);
if (a.length() == 1) a = "0" + a;
if (b.length() == 1) b = "0" + b;
return a + ":" + b;
}
int addTime(int &time, int len) {
int m = time % 100 + len;
int h = time / 100;
int mm = m % 60;
int hh = (h + m / 60) % 24;
time = hh * 100 + mm;
return (h + m / 60) / 24;
}
int passTime(int dayEnd, int timeEnd, int dayStart, int timeStart) {
int d = passDays(dayEnd, dayStart);
int m = (timeEnd / 100 - timeStart / 100) * 60 + (timeEnd % 100 - timeStart % 100);
return d * 1440 + m;
}
/*
int hash(mString s) {
unsigned long long h = 0;
for (int i = 0; i < strlen(s._str); ++i) {
h = (h * 237 + s._str[i] + 199799) % 199799;
}
return (int)h;
}
*/
int hash(mString s) {
if (mNameList.find(s) == mNameList.end()) {
++pos;
mNameList[s] = pos;
return pos;
}
else {
return mNameList.find(s)->second;
}
}
int getNo(int trainID, int trainNo) {
return trainID * 100 + trainNo;
}