Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstring>
- #include <iostream>
- using namespace std;
- class Runner {
- private:
- char* ime;
- char drzhava[50];
- int minuti;
- int sekundi;
- int brMedali;
- public:
- Runner()
- {
- ime = new char[0];
- }
- ~Runner()
- {
- delete[] ime;
- }
- Runner(char* ime, char* drzhava, int minuti, int sekundi, int brMedali)
- {
- this->ime = new char[strlen(ime) + 1];
- strcpy(this->ime, ime);
- strcpy(this->drzhava, drzhava);
- this->minuti = minuti;
- this->sekundi = sekundi;
- this->brMedali = brMedali;
- }
- Runner(const Runner& r)
- {
- this->ime = new char[strlen(r.ime) + 1];
- strcpy(this->ime,r. ime);
- strcpy(this->drzhava,r. drzhava);
- this->minuti = r.minuti;
- this->sekundi = r.sekundi;
- this->brMedali = r.brMedali;
- }
- Runner& operator=(Runner& r)
- {
- this->ime = new char[strlen(r.ime) + 1];
- strcpy(this->ime,r. ime);
- strcpy(this->drzhava,r. drzhava);
- this->minuti = r.minuti;
- this->sekundi = r.sekundi;
- this->brMedali = r.brMedali;
- return *this;
- }
- Runner& operator++()
- {
- brMedali++;
- return *this;
- }
- bool operator!=(Runner& r)
- {
- return (strcmp(drzhava, r.drzhava) == 0) ? false : true;
- }
- bool operator<(Runner& r)
- {
- if (minuti*60 + sekundi < r.minuti*60 + r.sekundi)
- {
- return true;
- }
- return false;
- }
- friend ostream& operator<<(ostream& os, Runner& r)
- {
- os << r.ime << " - " << r.drzhava << " - " << r.minuti << ":" << r.sekundi << " - " << r.brMedali;
- return os;
- }
- int getMinuti()
- {
- return minuti;
- }
- int getSekundi()
- {
- return sekundi;
- }
- };
- class Race {
- private:
- char imeTrka[50];
- Runner* trkachi;
- int brTrkachi;
- public:
- Race()
- {
- trkachi = new Runner[0];
- brTrkachi = 0;
- }
- ~Race()
- {
- delete[] trkachi;
- }
- Race(char* name)
- {
- strcpy(imeTrka, name);
- trkachi = new Runner[0];
- brTrkachi = 0;
- }
- Race(const Race& r)
- {
- strcpy(this->imeTrka, r.imeTrka);
- Runner* tmp = new Runner[r.brTrkachi];
- for (int i = 0; i < r.brTrkachi; i++)
- {
- tmp[i] = r.trkachi[i];
- }
- brTrkachi = r.brTrkachi;
- trkachi = tmp;
- }
- Race& operator=(Race& r)
- {
- strcpy(this->imeTrka, r.imeTrka);
- Runner* tmp = new Runner[r.brTrkachi];
- for (int i = 0; i < r.brTrkachi; i++)
- {
- tmp[i] = r.trkachi[i];
- }
- delete[] trkachi;
- brTrkachi = r.brTrkachi;
- trkachi = tmp;
- return *this;
- }
- // overload na prefiksan ++( ++x)
- Race& operator++()
- {
- int index = -1, vreme = 100000;
- for (int i = 0; i < brTrkachi; i++)
- {
- int time = trkachi[i].getMinuti()*60 + trkachi[i].getSekundi();
- if (vreme > time)
- {
- index = i;
- vreme = time;
- }
- }
- ++trkachi[index];
- return *this;
- }
- // overload na postfiksan ++( x++)
- Race/* ne stavjamo referencu */ operator++(int)
- {
- Race nova(*this);
- /*
- *
- *
- */
- return nova;
- }
- Race& operator+=(Runner& r)
- {
- Runner* tmp = new Runner[brTrkachi + 1];
- for (int i = 0; i < brTrkachi; i++)
- {
- tmp[i] = trkachi[i];
- }
- tmp[brTrkachi++] = r;
- delete[] trkachi;
- trkachi = tmp;
- return *this;
- }
- friend ostream& operator<<(ostream& os, Race& r)
- {
- os << r.imeTrka << ":" << endl;
- for (int i = 0; i < r.brTrkachi; i++)
- {
- os << r.trkachi[i] << endl;
- }
- return os;
- }
- Race& operator-=(Runner& r)
- {
- int nemaDaSeBrishev = 0;
- for (int i = 0; i < brTrkachi; i++)
- {
- if (trkachi[i] != r)
- {
- nemaDaSeBrishev++;
- }
- }
- Runner* tmp = new Runner[nemaDaSeBrishev];
- int tmpCnt = 0;
- for (int i = 0; i < brTrkachi; i++)
- {
- if (trkachi[i] != r)
- {
- tmp[tmpCnt++] = trkachi[i];
- }
- }
- brTrkachi = tmpCnt;
- delete[] trkachi;
- trkachi = tmp;
- return *this;
- }
- };
- int main() {
- int n;
- cin >> n;
- char nameRace[50];
- cin >> nameRace;
- Race race = Race(nameRace);
- int m;
- cin >> m;
- char name[50];
- char country[50];
- int minutes;
- int seconds;
- int numberOfMedals;
- for (int i=0; i < m; ++i) {
- cin >> name;
- cin >> country;
- cin >> minutes;
- cin >> seconds;
- cin >> numberOfMedals;
- Runner r = Runner(name,country,minutes,seconds,numberOfMedals);
- race += r;
- }
- cout << race;
- if (n == 1) {
- ++race;
- cout << race;
- }
- else if (n == 2) {
- cin >> name;
- cin >> country;
- cin >> minutes;
- cin >> seconds;
- cin >> numberOfMedals;
- Runner r = Runner(name,country,minutes,seconds,numberOfMedals);
- race -= r;
- cout << race;
- }
- else if (n == 3) {
- cin >> name;
- cin >> country;
- cin >> minutes;
- cin >> seconds;
- cin >> numberOfMedals;
- Runner r = Runner(name,country,minutes,seconds,numberOfMedals);
- race -= r;
- ++race;
- cout << race;
- }
- }
Add Comment
Please, Sign In to add comment