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#ifndef AEDA_PROJECT_UTILITIES_H
#define AEDA_PROJECT_UTILITIES_H
#include <iostream>
#include <vector>
#include "Service.h"
#include "AutoRepairShop.h"
#include "PointCard.h"
#define SECS_PER_MIN 60
#define MINs_PER_HOUR 60
#define HOURS_PER_DAY 24
#define DAYS_PER_YEAR 365
using namespace std;
struct Date;
class Person;
bool operator==(const Person &p1, const Person &p2);
template<class T>
bool exists(T obj, const vector<T> &v) {
for (size_t i = 0; i < v.size(); i++) {
if (obj == v[i])
return true;
}
return false;
}
template<class T>
bool addsIfNotExist(T obj, vector<T> &v) {
if (exists(obj, v))
return false;
v.push_back(obj);
return true;
}
bool readString(const string &prompt, string &returnString);
ostream &operator<<(ostream &out, Date &d1);
template<class T>
void writeVector(vector<T *> vec, ostream &out) {
for (size_t i = 0; i < vec.size(); i++) {
vec[i]->saveObjectInfo(out);
if (i != vec.size() - 1)
out << endl;
}
}
template<class T, class Y>
void writeUnorderedSet(unordered_set<T *, Y, Y> set, ostream &out){
typename unordered_set<T *, Y, Y>::iterator it = set.begin();
while(it != set.end()){
(*it)->saveObjectInfo(out);
it++;
if(it != set.end())
out<<endl;
}
}
template<class T>
void writeBST(BST<T *> tree, ostream &out) {
BSTItrLevel <T *> it(tree);
while (!it.isAtEnd()) {
it.retrieve()->saveObjectInfo(out);
it.advance();
if(!it.isAtEnd())
out << endl;
}
}
template<class T>
int sequentialSearch(const vector<T> &v, T x) {
for (unsigned int i = 0; i < v.size(); i++)
if (v[i] == x)
return i;
return -1;
}
template<class T>
void insertionSort(vector<T> &v) {
for (unsigned int p = 1; p < v.size(); p++) {
T tmp = v[p];
int j;
for (j = p; j > 0 && tmp < v[j - 1]; j--)
v[j] = v[j - 1];
v[j] = tmp;
}
};
template<class T>
void inverseInsertionSort(vector<T> &v) {
for (unsigned int p = 1; p < v.size(); p++) {
T tmp = v[p];
int j;
for (j = p; j > 0 && tmp > v[j - 1]; j--)
v[j] = v[j - 1];
v[j] = tmp;
}
};
/*long int dateToDayNumber(Date date);
Date dayNumberToDate(long int g);
Date operator+(Date d, int i);*/
bool operator==(tm d1, tm d2);
bool operator>(tm d1, tm d2);
bool validDay(int year, int month, int day);
bool validHour(int hour, int minute);
tm getToday();
#endif //AEDA_PROJECT_UTILITIES_H