Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by mkk13 ( 14 years ago )
#ifndef _PARKING_H

#define _PARKING_H
#include "defines.h"
#include "main.h"


class CParkingMiejsce
{
private:
 //pole
 CPojazd* pojazd;
public:
 //metody
 bool CzyZajete()        {return (pojazd==0) ? false : true;}
 CPojazd* Pojazd()        {return pojazd;}
 void Zwolnij();
 void Zajmij(CPojazd* Pojazd_zap);
 //konstruktory
 CParkingMiejsce()        {DEBUG_K pojazd=0;}
 CParkingMiejsce(const CParkingMiejsce& kopia) {DEBUG_K pojazd=&(CPojazd(*kopia.pojazd));}
 ~CParkingMiejsce()        {DEBUG_D}
};

void CParkingMiejsce::Zajmij(CPojazd* Pojazd_zap)
{
 pojazd = Pojazd_zap;
 cout << "Miejsce zostalo zajete." << endl;
 return;
}
void CParkingMiejsce::Zwolnij()
{
 pojazd=0;
 cout << "Miejsce zostało zwolnione." << endl;
 return;
}


class CParkingBramka
{
private:
 //pola
 int stan_obecny;
public:
 //konstruktory
 CParkingBramka()  {DEBUG_K stan_obecny=0;}
 ~CParkingBramka()  {DEBUG_D}
 //metody
 int stan()    {return stan_obecny;}
 
 CParkingBramka operator++()
 {
  this->stan_obecny++;
 }
 CParkingBramka operator--()
 {
  this->stan_obecny--;
 }
};


class CParking
{
private:
 //pola
 SVector3d wymiar;
 CParkingMiejsce* Miejsce;
 CParkingBramka bramka;
 int ParkingID;
 static int ParkingCount;
public:
 //konstruktory
 CParking()           {CParking(2,2,2);}
 CParking(int x, int y, int z);
 CParking(SVector3d Wymiar)       {CParking(Wymiar.x, Wymiar.y, Wymiar.z);}
 CParking(const CParking& Kopia);
 ~CParking();
 //metody
 void ZajmijMiejsce(CPojazd* pojazd, int x, int y, int z);
 void ZwolnijMiejsce(int x, int y, int z);
 void ZwolnijMiejsce(CPojazd* pojazd);
 CParkingMiejsce PodajMiejsce(int a, int b, int c) {return Miejsce[(a-1) + (b-1)*wymiar.x + (c-1)*wymiar.x*wymiar.y];}
 SVector3d PodajWymiar() const      {return wymiar;}
 static int IloscParkingow()       {return ParkingCount;}
 int WolneMiejsca()         {return ((int)wymiar - bramka.stan());}

 CParking operator+(CParking& Parking2)
{
 return CParking(this->wymiar+Parking2.wymiar);
}
 friend CParking operator*(const CParking& Parking, int Liczba)
 {
  return(Parking.wymiar * Liczba);
 }
 friend CParking operator*(int Liczba, const CParking& Parking)
 {
  return(Parking * Liczba);
 }

};


void CParking::ZajmijMiejsce(CPojazd* pojazd, int x, int y, int z)
{
 if(PodajMiejsce(x,y,z).CzyZajete())
  cout << "Wybrane miejsce jest zajete. Prosze wybrac inne." << endl;
 else
 {
  PodajMiejsce(x,y,z).Zajmij(pojazd);
  ++bramka;
  cout << "Samochod zostal zaparkowany." << endl;
 }
 return;
}
void CParking::ZwolnijMiejsce(int x,int y,int z)
{
 if(PodajMiejsce(x,y,z).CzyZajete())
 {
  PodajMiejsce(x,y,z).Zwolnij();
  --bramka;
  cout << "Samochod opuscil miejsce" << endl;
 }
 else
  cout << "Prosze wpierw zajac jakies miejsce." << endl;
 return;
}
void CParking::ZwolnijMiejsce(CPojazd* pojazd)
{
 for(int i=0; i<(int)wymiar; i++)
  if(!Miejsce[i].CzyZajete())
   if(Miejsce[i].Pojazd()==pojazd)
   {
    Miejsce[i].Zwolnij();
    --bramka;
    cout << "Samochod opuscil miejsce" << endl;
   }
 return;
}
CParking::CParking(int x, int y, int z)
{
 cout << "Buduje parking..." << endl;
 DEBUG_K

 ParkingCount++;
 ParkingID=ParkingCount;
 Miejsce = 0;
 SVector3d wymiar(x,y,z);
 bramka = CParkingBramka();

 Miejsce = new CParkingMiejsce[(int)wymiar];
 if(Miejsce == NULL)
  cout << "Brak miejsca w pamięci, aby zbudować tak wielki parking." << endl;
 else
  cout << "Parking został zbudowany." << endl;
}
CParking::CParking(const CParking& kopia)
{
 DEBUG_K

 ParkingCount++;
 ParkingID=ParkingCount;
 wymiar = kopia.wymiar;
 Miejsce = new CParkingMiejsce [(int)wymiar];
 memcpy(Miejsce, kopia.Miejsce, (int)wymiar * sizeof(CParkingMiejsce));
 bramka = kopia.bramka;
}
CParking::~CParking()
{
 DEBUG_D
 
 cout << "Burzy parking..." << endl;
 ParkingCount--;
 delete[] Miejsce;

 cout << "Parking został zburzony." << endl;
}


#endif

 

Revise this Paste

Your Name: Code Language: