Sprawozdanie

11
// 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

Transcript of Sprawozdanie

Page 1: 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

Page 2: Sprawozdanie

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;

Page 3: Sprawozdanie

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;

Page 4: Sprawozdanie

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

{

Page 5: Sprawozdanie

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;

Page 6: Sprawozdanie

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;

Page 7: Sprawozdanie

}

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;

}

}

Page 8: Sprawozdanie

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;

Page 9: Sprawozdanie

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];

Page 10: Sprawozdanie

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()

Page 11: Sprawozdanie

{

delete wskbaza_marek;

delete wsksilnik;

}