diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..3fd8b8f Binary files /dev/null and b/.DS_Store differ diff --git a/1/1.cpp b/1/1.cpp index b83dbef..e8ec5a6 100644 --- a/1/1.cpp +++ b/1/1.cpp @@ -4,122 +4,190 @@ #include using namespace std; -class Person { +class Person +{ public: - - Person(const string& name) { + Person() : name(""), age(0) {} + Person(const string &name) + { this->name = name; - } - string& getName() { return name; } + Person(const string _name, int _age) + { + this->name = _name; + this->age = _age; + } + Person(const Person &person) + { + name = person.name; + age = person.age; + } + string &getName() { return name; } + string getName() const { return name; } + friend class Group; + bool operator<(const Person &person) const + { + return (name < person.name); + } + friend void swap(Person &first, Person &second) + { + swap(first.name, second.name); + swap(first.age, second.age); + } + bool operator==(const Person &person) const + { + return (name == person.name); + } private: string name; int age; - }; -ostream& operator<<(ostream& out, const Person& p) { +ostream &operator<<(ostream &out, const Person &p) +{ cout << p.getName(); return out; } - - -class Group { +class Group +{ public: - - Group(int max_lenght) { + Group(int max_lenght) + { this->cap = max_lenght; this->members = new Person[max_lenght]; this->size = 0; } - void add(Person p) { - if (this->size == this->cap) { + void add(Person p) + { + if (this->size == this->cap) + { return; } this->members[size] = p; this->size++; } - void deletePerson(string name) { + void deletePerson(string name) + { int i; - for (i = 0; i < size; i++) { - if(members[i].name == name) + for (i = 0; i < size; i++) + { + if (members[i].name == name) break; - } - for (int index = i; index < size - 1; index++) { + for (int index = i; index < size - 1; index++) + { members[index] = members[index + 1]; } size--; } - - ~Group() { + friend bool isGroupFull(Group); + friend ostream &operator<<(ostream &out, const Group &p); + Group operator+(Group const &group) + { + Group temp(cap + group.cap); + for (int i = 0; i < size; i++) + { + temp.members[i] = members[i]; + } + for (int i = 0, j = size; i < group.size; i++, j++) + { + temp.members[j] = group.members[i]; + } + temp.size = size + group.size; + return temp; + } + Group &operator+=(Group const &group) + { + cap += group.cap; + for (int i = 0, j = size; i < group.size; i++, j++) + { + members[j] = group.members[i]; + } + size += group.size; + return *this; + } + Group(const Group &other) : cap(other.cap), size(other.size), members(new Person[other.cap]) + { + for (int i = 0; i < size; i++) + { + members[i] = other.members[i]; + } + } + Group &operator=(const Group &other) + { + if (this != &other) + { + delete[] members; + cap = other.cap; + size = other.size; + members = new Person[cap]; + for (int i = 0; i < size; i++) + { + members[i] = other.members[i]; + } + } + return *this; + } + ~Group() + { delete[] members; } private: int size; int cap; - Person* members; - + Person *members; }; -bool isGroupFull(Group g) { +ostream &operator<<(ostream &out, const Group &p) +{ + for (int i = 0; i < p.size; i++) + { + out << p.members[i] << "\t"; + } + return out; +} + +bool isGroupFull(Group g) +{ return (g.size == g.cap); } int main() { - /* Person p1("somename"); - Person p1("somename2"); - cout << p1<score = score; this->label = label; this->detail = detail; ID_generator++; +} +Score::Score(int score, const char *detail, Label label) : ID(Score::ID_generator) +{ + this->score = score; + this->label = label; + this->detail = detail; + + ID_generator++; } +Score::Score() : ID(Score::ID_generator), score(0), detail(""), label(BAD) +{ + ID_generator++; +} + +void Score::setID_generator(int _ID_generator) +{ + ID_generator = _ID_generator; +} + +Score &Score::operator=(const Score &other) +{ + score = other.score; + label = other.label; + detail = other.detail; + return *this; +} +void print(const Score &score) +{ + cout << "score : " << score.score << endl; + cout << "label : " << score.label << endl; + cout << "detail: " << score.detail << endl; + cout << "ID: " << score.ID << endl; +} \ No newline at end of file diff --git a/2/Score.h b/2/Score.h index 0dd79cb..658ff96 100644 --- a/2/Score.h +++ b/2/Score.h @@ -1,18 +1,27 @@ +#pragma once #include #include using namespace std; -class Score { +class Score +{ public: - friend void print(const Score& score); - - typedef enum { + friend void print(const Score &score); + + typedef enum + { GREAT, GOOD, NOTBAD, BAD, - }Label; + } Label; + + Score(int score, char *detail, Label label); + Score(int score, const char *detail, Label label); + Score(); + friend int main(); + static void setID_generator(int); + Score &operator=(const Score &); - Score(int score, char* detail, Label label); private: int score; Label label; @@ -20,6 +29,3 @@ class Score { const int ID; static int ID_generator; }; - - - 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 diff --git a/2/main b/2/main new file mode 100755 index 0000000..3c78e65 Binary files /dev/null and b/2/main differ diff --git a/2/main.cpp b/2/main.cpp index 64d213e..491495f 100644 --- a/2/main.cpp +++ b/2/main.cpp @@ -6,27 +6,25 @@ #include "Score.h" #include "SomeRandomDotHFile.h" using namespace std; -#define FOR(n) for(int i=0;i