diff --git a/1/1.cpp b/1/1.cpp index b83dbef..380492d 100644 --- a/1/1.cpp +++ b/1/1.cpp @@ -1,18 +1,35 @@ - #include #include #include +#include using namespace std; class Person { public: - + Person(const string& name) { this->name = name; } - string& getName() { return name; } - + Person(const string n, const int a) { name = n; age = a; } + Person() {} + string& getName() { return name; } + const string& getName()const { return name; } + bool operator <(const Person p) + { + if (this->name < p.name) + return true; + else + return false; + } + bool operator ==(const Person p) + { + if (this->age == p.age) + return true; + else + return false; + } + friend class Group; private: string name; int age; @@ -25,15 +42,22 @@ ostream& operator<<(ostream& out, const Person& p) { } - class Group { public: - Group(int max_lenght) { + Group(int max_lenght) { this->cap = max_lenght; this->members = new Person[max_lenght]; this->size = 0; } + Group(const Group& g) + { + this->cap = g.cap; + this->size = g.size; + this->members = new Person[this->cap]; + for (int i = 0; i < g.size; i++) + this->members[i] = g.members[i]; + } void add(Person p) { if (this->size == this->cap) { return; @@ -44,16 +68,50 @@ class Group { void deletePerson(string name) { int i; for (i = 0; i < size; i++) { - if(members[i].name == name) + 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) + { + Group result(this->cap + g.cap); + result.size = this->size + g.size; + for (int i = 0; i < this->size; i++) + result.members[i] = this->members[i]; + for (int i = 0; i < g.size; i++) + result.members[i + this->size] = g.members[i]; + return result; + } + Group operator +=(const Group g) + { + Group temp = *this; + this->cap += g.cap; + this->size += g.size; + delete[] this->members; + this->members = new Person[this->cap]; + for (int i = 0; i < temp.size; i++) + this->members[i] = temp.members[i]; + for (int i = 0; i < g.size; i++) + this->members[i + temp.size] = g.members[i]; + return *this; + } + Group operator =(const Group g) + { + this->cap = g.cap; + this->size = g.size; + delete[] this->members; + this->members = new Person[this->cap]; + for (int i = 0; i < this->size; i++) + this->members[i] = g.members[i]; + return *this; + } + friend bool isGroupFull(Group g); + friend ostream& operator<<(ostream& out, const Group& g); ~Group() { delete[] members; } @@ -69,57 +127,58 @@ 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< to to pervent redefinition + Person p2("somename2"); + cout << p1 << p2; + + Group g1(5); g1.add({ "Erfan",20 }); g1.add({ "Saba",20 }); g1.add({ "Mahrokh",20 }); g1.add({ "Yasin",21 }); - cout<score = score; + this->label = label; + this->detail = detail; + ID_generator++; +} +Score::Score() : ID(-1) +{ + this->score = 0; + this->label = BAD; + this->detail = ""; +} +void Score::setID_generator(int input) +{ + if (ID_generator < input) + ID_generator += input - ID_generator; + else + ID_generator -= ID_generator - input; +} +Score Score::operator =(const Score s) +{ + this->score = s.score; + this->detail = s.detail; + this->label = s.label; + return *this; +} +void print(const Score& score) +{ + cout << score.score << " "; +} +int Score::ID_generator = 0; diff --git a/2/Score.h b/2/Score.h index 0dd79cb..5b2591d 100644 --- a/2/Score.h +++ b/2/Score.h @@ -1,10 +1,11 @@ +#pragma once #include #include using namespace std; class Score { public: friend void print(const Score& score); - + friend int main(); typedef enum { GREAT, GOOD, @@ -13,6 +14,10 @@ class Score { }Label; Score(int score, char* detail, Label label); + Score(int score, const char* detail, Label label); + Score(); + static void setID_generator(int input); + Score operator =(const Score s); private: int score; Label label; diff --git a/2/SomeRandomDotHFile.h b/2/SomeRandomDotHFile.h index 445514a..bb3ff51 100644 --- a/2/SomeRandomDotHFile.h +++ b/2/SomeRandomDotHFile.h @@ -1 +1,2 @@ +#pragma once #include "Score.h" \ No newline at end of file