diff --git a/1/1.cpp b/1/1.cpp index b83dbef..6a1b934 100644 --- a/1/1.cpp +++ b/1/1.cpp @@ -2,16 +2,38 @@ #include #include #include +#include using namespace std; class Person { public: - + Person(const string& name) { this->name = name; + } + Person(){}; + Person(const string n, const int a){ + this->name = n; + this->age = a; } string& getName() { return name; } + bool operator <(const Person p) + { + if ( name < p.name) + return true; + else + return false; + } + bool operator ==(const Person p) + { + if (age == p.age) + return true; + else + return false; + } + friend class Group; + friend ostream& operator<<(ostream& out, const Person& p); private: string name; @@ -19,16 +41,23 @@ class Person { }; -ostream& operator<<(ostream& out, const Person& p) { - cout << p.getName(); +ostream& operator<<(ostream& out, Person& p) { + cout << p.getName() ; return out; } - class Group { public: - + Group(){}; + Group(Group& g){ + cap = g.cap; + size = g.size; + this->members = new Person[g.cap]; + for(int i=0; i < size; i++){ + members[i] = g.members[i]; + } + } Group(int max_lenght) { this->cap = max_lenght; this->members = new Person[max_lenght]; @@ -46,17 +75,59 @@ class Group { for (i = 0; i < size; i++) { if(members[i].name == name) break; - + } for (int index = i; index < size - 1; index++) { members[index] = members[index + 1]; } size--; } + Group& operator=(const Group g){ + this->cap = g.cap; + this->size = g.size; + this->members = new Person[g.cap]; + for (int i = 0; i < size; i++) { + this->members[i] = g.members[i]; + } + return *this; + } + + Group operator+(const Group g){ + Group outPut(cap + g.cap); + int i = 0, j =0; + for (; i < size; i++){ + outPut.members[i] = members[i]; + } + for(; j < g.size; j++){ + outPut.members[i] = g.members[j]; + i++; + } + return outPut; + } + Group& operator+=(Group g){ + Person* tmp = new Person[g.cap + cap]; + int i = 0, j =0; + for (; i < size; i++) { + + tmp[i] = members[i]; + } + for (; j < g.size; j++) { + + tmp[i] = members[j]; + i++; + } + members = tmp; + cap += g.cap; + size += g.size; + return *this; + } ~Group() { delete[] members; } + friend bool isGroupFull(Group g); + friend ostream& operator<<(ostream& out, const Group& g); + friend class Person; private: int size; @@ -68,36 +139,39 @@ class Group { bool isGroupFull(Group g) { return (g.size == g.cap); } +ostream& operator<<(ostream& out, const Group& g) { + for (int i = 0; i < g.size; i++) + out << g.members[i] << "\t"; + return out; +} int main() { - /* + Person p1("somename"); - Person p1("somename2"); - cout << p1<score = score; this->label = label; this->detail = detail; - ID_generator++; } +Score::Score():ID(ID_generator) { + label = GOOD; + score = 0; + detail = " "; + ID_generator++; +} +Score::Score(int s, string d, Label l):ID(ID_generator) { + this->score = s; + this->detail = d; + this->label = l; + ID_generator ++; + +} +Score& Score::operator= (const Score& s) { + score = s.score; + detail = s.detail; + label = s.label; + return *this; +} +void print(const Score& s) { + cout << "Score: " << s.score << endl; + cout << "Detail: " << s.detail << endl; + cout << "Lable: " << s.label << endl; + cout << "ID: " << s.ID << endl; +} +void setID_generator(int id) { + Score::ID_generator = id; + return ; +} diff --git a/2/Score.h b/2/Score.h index 0dd79cb..fb730d4 100644 --- a/2/Score.h +++ b/2/Score.h @@ -4,7 +4,6 @@ using namespace std; class Score { public: friend void print(const Score& score); - typedef enum { GREAT, GOOD, @@ -13,6 +12,11 @@ class Score { }Label; Score(int score, char* detail, Label label); + Score(); + Score(int s, string d, Label l); + Score& operator= (const Score& S); + friend void setID_generator(int id); + friend int main(); private: int score; Label label; @@ -20,6 +24,7 @@ class Score { const int ID; static int ID_generator; }; - +void setID_generator(int id); +void print(const Score& s); diff --git a/2/main.cpp b/2/main.cpp index 64d213e..b5876c4 100644 --- a/2/main.cpp +++ b/2/main.cpp @@ -9,11 +9,9 @@ using namespace std; #define FOR(n) for(int i=0;i