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