Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- enum Kompanija{ Pegasus, TurkishAirlines, AustrianAirlines, FlyEmirates };
- int ID = 1;
- struct Putnik{
- int _putnikID;
- char * _imePrezime;
- float _brojPredjenihMilja;
- void Unos(char * imePrezime)
- {
- int size = strlen(imePrezime) + 1;
- _imePrezime = new char[size];
- strcpy_s(_imePrezime, size, imePrezime);
- _brojPredjenihMilja = 0;
- _putnikID = ID++;
- }
- void Info()
- {
- cout << "[" << _putnikID<<"] "<< _imePrezime << " (" << _brojPredjenihMilja << " milja)" << endl;
- }
- void Dealociraj()
- {
- delete[] _imePrezime;
- _imePrezime = nullptr;
- }
- void DodajPredjeneMilje(int brojMilja)
- {
- _brojPredjenihMilja += brojMilja;
- }
- };
- struct Rezervacija{
- Putnik *_putnik;
- int _oznakaSjedista;
- float _cijena;
- void Unos(Putnik putnik, int oznaka, float cijena)
- {
- // dodano
- _putnik = new Putnik;
- _putnik->Unos(putnik._imePrezime);
- _oznakaSjedista = oznaka;
- _cijena = cijena;
- }
- void Info()
- {
- _putnik->Info();
- cout << "Sjediste: " << _oznakaSjedista << "; Cijena: " << _cijena << endl;
- }
- void Dealociraj()
- {
- _putnik->Dealociraj();
- }
- };
- struct Let{
- Kompanija *_kompanija;
- char *_pocetak; //pocetna lokacija
- char *_destinacija;
- Rezervacija *_rezervacije;
- int _brojMjesta; //maksimalan broj mjesta na letu
- float _brojMilja; //odnosi se na duzinu leta – broj predjenih milja
- float _cijenaKarte;
- void Unos(Kompanija kompanija, char *pocetak, char *destinacija, int brojMjesta, float brojMilja, float cijena)
- {
- //*_kompanija = kompanija;
- int size = strlen(pocetak) + 1;
- _pocetak = new char[size];
- strcpy_s(_pocetak, size, pocetak);
- size = strlen(destinacija) + 1;
- _destinacija = new char[size];
- strcpy_s(_destinacija, size, destinacija);
- _brojMjesta = brojMjesta;
- _rezervacije = new Rezervacija[_brojMjesta];
- Putnik* temp = new Putnik;
- temp->Unos("<SLOBODNO MJESTO>");
- for (int i = 0; i < _brojMjesta; i++){
- _rezervacije[i].Unos(*temp, i, 0);
- if(i==0)
- cout << "Inicijalizacija mjesta OK" << endl;
- }
- _brojMilja = brojMilja;
- _cijenaKarte = cijena;
- }
- void Dealociraj()
- {
- /* Definisati funkciju vodeci racuna o oslobadjanju svih resursa koji su alocirani za potrebe objekta tipa Let */
- }
- bool AddRezervaciju(Putnik* p)
- {
- // ispis svih slobodnih mjesta
- for(int i=0; i<_brojMjesta; i++){
- if(strcmp(_rezervacije[i]._putnik->_imePrezime, "<SLOBODNO MJESTO>") == 0){
- cout << _rezervacije[i]._oznakaSjedista << " - ";
- }
- }
- int izbor = 3;
- //int izbor;
- //cout << "\n\nOdaberite sjediste (0-7): ";
- //cin >> izbor;
- //cin.ignore();
- float uracunajPopust = 1;
- float ostvareneMilje = p->_brojPredjenihMilja;
- if(ostvareneMilje >= 10000 && ostvareneMilje <= 49999)
- uracunajPopust = 0.9;
- else if(ostvareneMilje >= 50000 && ostvareneMilje <= 99000)
- uracunajPopust = 0.8;
- else if(ostvareneMilje >= 100000)
- uracunajPopust = 0.7;
- else
- uracunajPopust = 4;
- for (int i = 0; i < _brojMjesta; i++)
- {
- _rezervacije[i].Info();
- cout << endl;
- }
- return true;
- /*
- Na samom pocetku, funkcija treba ispisati listu svih SLOBODNIH sjedista na letu, te omoguciti odabir nekog od njih.
- Prilikom formiranja cijene karte voditi racuna o broju predjenih milja;
- ako je putnik presao od 10000 do 50000 milja onda ostvaruje popust od 10% na punu cijenu karte (_cijenaKarte),
- od 50000 do 100000 milja ostvaruje popust od 20% na punu cijenu karte, a preko 100000 milja ostvaruje popust od 30% na punu cijenu karte.
- Onemoguciti dodavanje rezervacija sa identicnim putnicima (isti putnikID i imePrezime).
- U zavisnosti od uspjesnosti funkcija vraca true ili false
- */
- }
- bool RemoveRezervaciju(int oznakaSjedista)
- {
- /*
- Funkcija uklanja rezervaciju na sjedistu cija je oznaka proslijedjena kao parametar funkcije, te vraca vrijednost.
- U slucaju da oznaceno mjesto nije rezervisano ili ne postoji na tom letu, funkcija vraca vrijednost false
- */
- }
- };
- float GetMiljeByKompanija(Let *letovi, int maxLetova, Kompanija k, Putnik p)
- {
- /*funkcija vraca broj milja koje je putnik p ostvario putujuci sa kompanijom k*/
- return 0;
- }
- void main()
- {
- Let let;
- char *pocetak = "Sarajevo";
- char *destinacija = "London";
- int mjesta = 6;
- float milje = 1245;
- float cijena = 100;
- // void Unos(Kompanija kompanija, char *pocetak, char *destinacija, int brojMjesta, float brojMilja, float cijena)
- let.Unos(Pegasus, pocetak, destinacija, mjesta, milje, cijena);
- /** ================ **/
- Putnik* p = new Putnik;
- p->_imePrezime = "Miljana Putnik";
- p->_brojPredjenihMilja = 74000;
- let.AddRezervaciju(p);
- system("Pause > 0");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement