Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //header.h
- #include <iostream>
- #include <cstdlib>
- #include <cmath>
- #include <ctime>
- using namespace std;
- class Zawodnik {
- int dane;
- static int licznik;
- int kategoria;
- public:
- void preinKategoria(Zawodnik&);
- void predeKategoria(Zawodnik&);
- void friend wypisz_zawodnika(Zawodnik&);
- int getKategoria();
- int getDane();
- Zawodnik();
- };
- class Stol {
- int ilosc_zawodnikow = 0;
- int id;
- static int licznik;
- int stan = 0;
- Zawodnik **zawodnicy;
- const int LIMIT = 2;
- public:
- int get_id();
- void friend wypisz_stol(Stol&);
- bool friend operator!=(Stol&, Stol&);
- bool friend operator==(Stol&, Stol&);
- Stol friend operator+=(Stol&, Zawodnik&);
- Stol friend operator-=(Stol&, Zawodnik&);
- Stol friend operator++(Stol&);
- Stol friend operator--(Stol&);
- Stol();
- Stol(const Stol&);
- };
- struct backup {
- Stol *numer_gry;
- static int licznik;
- int id;
- backup *next;
- void add(backup *&, Stol&);
- void show(backup*, int);
- Stol copy(backup*, int);
- };
- //zawodnik
- #include "Header.h"
- int Zawodnik::licznik = 0;
- Zawodnik::Zawodnik()
- {
- dane = ++licznik;
- kategoria = rand() % 7 + 1;
- }
- int Zawodnik::getKategoria()
- {
- return kategoria;
- }
- int Zawodnik::getDane()
- {
- return dane;
- }
- void Zawodnik::preinKategoria(Zawodnik &a)
- {
- a.kategoria++;
- }
- void Zawodnik::predeKategoria(Zawodnik&a)
- {
- a.kategoria--;
- }
- //Stol
- #include "Header.h"
- int Stol::licznik = 0;
- Stol::Stol()
- {
- id=++licznik;
- zawodnicy = new Zawodnik*[2];
- }
- Stol operator+=(Stol&A, Zawodnik&a)
- {
- if (A.stan < A.LIMIT)
- {
- A.zawodnicy[A.stan] = &a;
- A.stan++;
- A.ilosc_zawodnikow++;
- return A;
- }
- else
- {
- cout << "stol pelny" << endl;
- return A;
- }
- }
- bool operator==(Stol&A, Stol&B)
- {
- if(A.zawodnicy==B.zawodnicy)
- /*
- if (A.ilosc_zawodnikow == B.ilosc_zawodnikow && A.id == B.id && A.zawodnicy[0]->getDane() == B.zawodnicy[0]->getDane() && A.zawodnicy[0]->getKategoria() == B.zawodnicy[0]->getKategoria() && A.zawodnicy[1]->getDane() == B.zawodnicy[1]->getDane() && A.zawodnicy[1]->getKategoria() == B.zawodnicy[1]->getKategoria())*/
- return true;
- else
- return false;
- }
- bool operator!=(Stol&A, Stol&B)
- {
- if (A.zawodnicy == B.zawodnicy)
- /*
- if (A.ilosc_zawodnikow == B.ilosc_zawodnikow && A.id == B.id && A.zawodnicy[0]->getDane() == B.zawodnicy[0]->getDane() && A.zawodnicy[0]->getKategoria() == B.zawodnicy[0]->getKategoria() && A.zawodnicy[1]->getDane() == B.zawodnicy[1]->getDane() && A.zawodnicy[1]->getKategoria() == B.zawodnicy[1]->getKategoria())*/
- return false;
- else
- return true;
- }
- Stol operator-=(Stol &A, Zawodnik&a)
- {
- if (A.zawodnicy[0]->getDane() == a.getDane())
- {
- A.zawodnicy[0] = A.zawodnicy[1];
- A.zawodnicy[0] = NULL;
- A.ilosc_zawodnikow--;
- A.stan--;
- return A;
- }
- else if (A.zawodnicy[1]->getDane() == a.getDane())
- {
- A.zawodnicy[1] = NULL;
- A.ilosc_zawodnikow--;
- A.stan--;
- return A;
- }
- else
- {
- cout << "Nie ma takiego zawodnika" << endl;
- return A;
- }
- }
- int Stol::get_id()
- {
- return id;
- }
- Stol::Stol(const Stol& kStol)
- {
- ilosc_zawodnikow = kStol.ilosc_zawodnikow;
- id = kStol.id;
- zawodnicy = kStol.zawodnicy;
- zawodnicy[1] = kStol.zawodnicy[1];
- zawodnicy[0] = kStol.zawodnicy[0];
- stan = kStol.stan;
- }
- Stol operator++(Stol&A)
- {
- if (A.zawodnicy[0]->getKategoria() < 7)
- A.zawodnicy[0]->preinKategoria(*A.zawodnicy[0]);
- if (A.zawodnicy[1]->getKategoria() < 7)
- A.zawodnicy[1]->preinKategoria(*A.zawodnicy[1]);
- return A;
- }
- Stol operator--(Stol&A)
- {
- if (A.zawodnicy[0]->getKategoria() > 0)
- A.zawodnicy[0]->predeKategoria(*A.zawodnicy[0]);
- if (A.zawodnicy[1]->getKategoria() > 0)
- A.zawodnicy[1]->predeKategoria(*A.zawodnicy[1]);
- return A;
- }
- //backup
- #include "Header.h"
- int backup::licznik = 0;
- void backup::add(backup *&H, Stol &A)
- {
- backup*temp = new backup;
- temp ->next = H;
- temp->id = ++licznik;
- temp->numer_gry = new Stol(A);
- H = temp;
- }
- void backup::show(backup * H, int x)
- {
- backup *temp = H;
- while (temp != NULL)
- {
- if (temp->id == x)
- wypisz_stol(*temp->numer_gry);
- temp = temp->next;
- }
- }
- Stol backup::copy(backup*H, int x)
- {
- backup *temp = H;
- while (temp != NULL)
- {
- if (temp->id == x)
- return *temp->numer_gry;
- temp = temp->next;
- }
- }
- void show(backup * H)
- {
- backup *temp = H;
- while (temp != NULL) {
- wypisz_stol(*temp->numer_gry);
- temp = temp->next;
- }
- }
- //main
- #include "Header.h"
- #include <ctime>
- using namespace std;
- void wypisz_stol(Stol&A)
- {
- cout << "Id stolu: " << A.licznik << endl;
- cout << "Stan: " << endl;
- if (A.stan == 1)
- cout << "Oczekiwanie na zawodnika" << endl;
- else if (A.stan == 0)
- cout << "Oczekiwanie na zawodnikow" << endl;
- else if (A.stan == 2)
- {
- cout << "Gotowy" << endl;
- cout << "Zawodnik 1: " << A.zawodnicy[0]->getDane() << "(" << A.zawodnicy[0]->getKategoria() << ")" << endl;
- cout << "Zawodnik 2: " << A.zawodnicy[1]->getDane() << "(" << A.zawodnicy[1]->getKategoria() << ")" << endl;
- }
- }
- void wypisz_zawodnika(Zawodnik&a)
- {
- cout << "Id zawodnika: " << a.dane << endl;
- cout << "Kategoria: " << a.kategoria << endl;
- }
- int main()
- {
- srand(time(NULL));
- backup *H = NULL;
- Zawodnik a;
- Zawodnik b;
- Zawodnik c;
- wypisz_zawodnika(a);
- wypisz_zawodnika(b);
- Stol A;
- A += a;
- H->add(H, A);
- if (A == H->copy(H, 1))
- cout << "TRUE" << endl;
- else
- cout << "FALSE" << endl;
- A += b;
- H->add(H, A);
- A -= b;
- H->add(H, A);
- A += b;
- H->add(H, A);
- if (H->copy(H, 1) != H->copy(H, 2))
- cout << "TRUE" << endl;
- else
- cout << "FALSE" << endl;
- ++A;
- wypisz_stol(A);
- --A;
- wypisz_stol(A);
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement