Sprawozdanie
-
Upload
konrad-ryncarz -
Category
Documents
-
view
136 -
download
2
Transcript of Sprawozdanie
// KLASA PACZKA
class paczka - definicja klasy i jej składowe, etykiety public i private
{
private: - etykiety private
string zawartosc;
int masa;
public: - etykiety private
paczka(string, int);
void wrzuc();
int podaj_mase();
string co_w_paczce();
friend paczka operator + (const paczka&, const paczka&);
friend ostream & operator << (ostream&, const paczka&);
paczka& operator = (const paczka&);
};
(...)
//FUNKCJE KLASY PACZKA
paczka::paczka(string zawartosc_towaru = "", int masa_towaru = 0) : zawartosc(zawartosc_towaru), masa(masa_towaru)
{
}
void paczka::wrzuc()
{
cout << "Co znajduje sie w paczce" << endl; - wprowadzenie typu towaru i masy
cin >> zawartosc;
cout << "Podaj wage" << endl;
cin >> masa;
}
int paczka::podaj_mase()
{
return masa;
}
string paczka::co_w_paczce()
{
return zawartosc;
}
paczka operator+(const paczka& paczka1, const paczka& paczka2)
{
string zawartosc = paczka1.zawartosc == paczka2.zawartosc ? paczka1.zawartosc : paczka1.zawartosc+" i "+paczka2.zawartosc;
return paczka(zawartosc, paczka1.masa+paczka2.masa);
}
ostream & operator << (ostream &wyjscie, const paczka & paczka1)
{
return wyjscie << "Zawartosc: " <<paczka1.zawartosc << endl << "Masa: " <<paczka1.masa << endl;
}
paczka& paczka::operator = (const paczka& paczka1)
{
zawartosc = paczka1.zawartosc;
masa = paczka1.masa;
return *this;
}
// KLASA SAMOCHOD
class ciezarowy : public samochod - definicja klasy i jej składowe, etykiety public i private, dziedziczenie
{
private:
int towar_max;
int towar;
vector <paczka> paczki;
public:
ciezarowy(baza& baza_marek);
void opcje();
void specjalne();
void ruch();
void specyfikacja();
~ciezarowy();
(...)
//FUNKCJE KLASY CIEZAROWY
ciezarowy::ciezarowy(baza& baza_marek) : samochod(baza_marek)
{
towar = 0;
cout << "Podaj maksymalny ciezar towaru w kg (> 0):" << endl;
do
{
cin >> towar_max;
}
while (towar_max <= 0);
}
void ciezarowy::opcje()
{
cout << endl;
cout << "1. Zaladuj" << endl;
cout << "2. Pokaz specyfikacje" << endl;
cout << "3. Przejedz sie" << endl;
cout << "4. Wroc do magazynu" << endl;
cout << endl;
}
void ciezarowy::ruch()
{
char z;
float t;
float i;
float vt;
float a;
do
{
cout << endl;
cout << marka << " jest na " << x << " metrze toru" << endl;
cout << "obecna predkosc = " << v << "m/s" << endl << endl;
cout << "Kazde dodatkowe 500 kg towaru obniza przyspieszenie ciezarowki o 5%" << endl;
cout << "waga towaru " << towar <<"/" << towar_max << endl;
cout << "1. wcisnij pedal gazu" << endl;
cout << "2. zwalniaj" << endl;
cout << "3. jedz ze stala predkoscia" << endl;
cout << "4. wypakuj/wpakuj towar" << endl;
cout << "5. wyjdz z samochodu" << endl;
if (towar != 0)
a -= (wsksilnik->a())*towar/500/20;
else
a = wsksilnik->a();
if (a < 0)
{
a = 0;
cout << "Zbyt duze obciazenie, przyspieszenie spada do 0" << endl;
}
if (towar > towar_max)
{
cout << "Przekroczono limit ladownosci, auto nie pojedzie" << endl;
v = 0;
}
cin >> z;
if (z != '5' and z != '4')
{
do
{
cout << "Podaj w sekundach jak dlugo tak bedziesz jechac t > 0" << endl;
cin >> t;
}
while (t <= 0);
switch (z)
{
case '1' :
i = 1;
vt = v;
while (vt < wsksilnik->predkosc_max() and i <= t)
{
vt = a*i;
i++;
}
--i;
x += v*i + a*i*i/2;
if (vt > wsksilnik->predkosc_max())
{
v = wsksilnik->predkosc_max();
t -= i;
x += v*t;
}
else
{
v = vt;
}
break;
case '2' :
i = 1;
vt = v;
while (vt > 0 and i <= t)
{
vt -= a/2*i;
i++;
}
--i;
x += v*i - a/2*i*i/2;
v = 0;
break;
case '3' :
x += v*t;
break;
default:
break;
}
}
else if (z == '4')
specjalne();
}
while (z != '5');
v = 0;
x = 0;
}
void ciezarowy::specyfikacja()
{
cout << endl;
cout << "Samochod ciezarowy" << endl;
cout << marka << endl;
cout << "masa - " << masa << endl;
cout << "waga / maksymalna waga towaru" << towar << "/" << towar_max << endl;
wsksilnik->dane();
}
void ciezarowy::specjalne()
{
int z;
char c;
paczka* temp;
do
{
cout << endl;
cout << "Wypakunek z " << marka << endl;
cout << "waga towaru " << towar << "/" << towar_max << endl;
cout << "Pamietaj ze wrzucona paczka na poczatku zostanie przylozona nowymi" << endl;
cout << endl;
cout << "1. Wrzuc paczke" << endl;
cout << "2. wyrzuc paczke" << endl;
cout << "3. wyjdz" << endl;
cin >> z;
switch (z)
{
case 1 :
temp = new paczka();
temp->wrzuc();
towar += temp->podaj_mase();
paczki.push_back(*temp);
cout << "Dodano nowa paczke." << endl;
cout << *temp;
cout << endl;
delete temp;
break;
case 2 :
if (paczki.size() > 0)
{
cout << "Czy chcesz usunac paczke?" << endl;
cout << paczki[paczki.size()-1];
cout << endl;
cout << "t - tak, n - nie" << endl;
do
cin >> c;
while (c != 't' and c != 'n');
if (c == 't')
{
towar -= paczki[paczki.size()-1].podaj_mase();
paczki.pop_back();
cout << "Usunieto " << endl;
}
}
else
{
cout << "Brak paczek do usunieca, wcisnij cokolwiek by wyjsc" << endl;
getch();
}
break;
default:
break;
}
}
while (z != 3);
}
ciezarowy::~ciezarowy()
{
delete wskbaza_marek;
delete wsksilnik;
}