Kód: Vybrať všetko
#include<iostream>
#include<string>
#include<new>
using namespace std;
class Vozidlo {
private :
string Znacka;
string Farba;
char Typ;
public :
Vozidlo();
Vozidlo(string , string, char);
~Vozidlo();
string getZnacka();
string getFarba();
char getTyp();
string getTyp1(char);
};
class Parkovisko
{
private:
Vozidlo* Parkovanie;
public:
// Parkovisko() = 0;
Parkovisko( int);
~Parkovisko();
void Zaparkuj(Vozidlo, int);
void Odparkuj(Vozidlo, int);
void getInfo(Vozidlo, int);
int PocetFree(Vozidlo, int);
bool isFree(Vozidlo, int);
};
// DEfinicie metod ------------------------------
Parkovisko::Parkovisko(int velkost)
{
Parkovanie = new Vozidlo[velkost];
for (int i=0; i < velkost; i++)// nastavovanie hodnot pola
Parkovanie[i] = NULL;
}
Vozidlo::Vozidlo(string znacka, string farba, char typ)
{
Znacka = znacka;
Farba = farba;
Typ = typ;
}
void Parkovisko::Zaparkuj(Vozidlo vehicle, int miesto)
{
if (vehicle.getTyp() == 'o')// Osobne auto zabarie 1 miesto
Parkovanie[miesto] = vehicle;
if (vehicle.getTyp() == 'n')// nakladne zaberie 2 miesta
{
Parkovanie[miesto] = vehicle;
Parkovanie[miesto+1] = vehicle;
};
}
// Odparkovanie aut
void Parkovisko::Odparkuj(Vozidlo vehicle, int miesto)
{
if (vehicle.getTyp() == 'o')
Parkovanie[miesto] = NULL;
if (vehicle.getTyp() == 'n')
{
Parkovanie[miesto] = NULL;
Parkovanie[miesto+1] = NULL;
};
}
//Zistovanie poctu volnych miest
int Parkovisko::PocetFree(Vozidlo vehicle, int velkost)
{
short pocet = 0;
for( int i = 0; i < velkost; i++)
if (Parkovanie[i] == vehicle)
pocet++;
return pocet;
}
//Zistovanie volneho miesta
bool Parkovisko::isFree(Vozidlo vehicle, int miesto)
{
if (Parkovanie[miesto] == vehicle)
return true;
else
return false;
}
inline string Vozidlo::getFarba()
{
return Farba;
}
inline string Vozidlo::getZnacka()
{
return Znacka;
}
// Vypise informacie o aute na urcitom mieste
/*void Parkovisko::getInfo(Vozidlo vehicle, int miesto)
{
cout << "farba " << getFarba() << endl;
cout << "znacka " << getZnacka() << endl;
cout << "typ " << getTyp1(typ) << endl;
}
*/
inline char Vozidlo::getTyp()
{
return Typ;
}
string Vozidlo::getTyp1(char typ)
{
if (typ == 'o')
return "osobne";
else
return "nakladne";
}
//Destruktory------------------------------------------------
Vozidlo::~Vozidlo()
{}
Parkovisko::~Parkovisko()
{
delete [] Parkovanie;
}
//---------------------------------------------------------------------
int main()
{
string farba, znacka;
char typ;
int velkost, miesto;
cout << "program simuluje parkovisko\n";
cout <<"Zadaj kapacitu parkoviska\n";
cin >> velkost;
int p = 0;
do {
cout << "Zadaj frabu auta | pre ukonecnie zadavania zadaj 0\n";
cin >> farba;
if (farba == "0")// pre ukoncenie zadavania
break;
cout << "Zadaj SPZ auta \n";
cin >> znacka;
cout << " zadaj typ auta Osobne = o / Nakladne = n\n";
cin >> typ;
cout <<"zadaj miesto parkovania " << endl;
cin >> miesto;
Vozidlo Auto(znacka, farba, typ);
Parkovisko parkovisko(velkost);
//podmienka , aby sa neparkovalo na obsadene miesto
if (Auto.getTyp() == 'o'){// pre osobne
if (parkovisko.isFree(Auto, miesto))
parkovisko.Zaparkuj(Auto, miesto);
else if (parkovisko.isFree(Auto, miesto) && parkovisko.isFree(Auto, miesto+1))// nakladne kontroluje dve miesta
parkovisko.Zaparkuj(Auto, miesto);
}
else{
cout << "miesto je obsadene a stoji tam" << endl;
//Parkovisko.getInfo();
continue;
}
//pre spravnost ukoncovacej podmienky
if (typ == 'o')//pre osobne
p++;
if (typ == 'n')// pre nakladne
p += 2;
cout << "pocet volnych miest : "<< parkovisko.PocetFree(Auto, velkost) << endl;
} while (p != velkost);
return 0;
}