Advertisement
developer10

Untitled

Jun 28th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. using namespace std;
  3.  
  4.  
  5. enum Kompanija{ Pegasus, TurkishAirlines, AustrianAirlines, FlyEmirates };
  6.  
  7. int ID = 1;
  8.  
  9. struct Putnik{
  10.  
  11.         int _putnikID;
  12.         char * _imePrezime;
  13.         float _brojPredjenihMilja;
  14.  
  15.         void Unos(char * imePrezime)
  16.         {
  17.             int size = strlen(imePrezime) + 1;
  18.             _imePrezime = new char[size];
  19.             strcpy_s(_imePrezime, size, imePrezime);
  20.             _brojPredjenihMilja = 0;
  21.             _putnikID = ID++;
  22.         }
  23.  
  24.         void Info()
  25.         {
  26.             cout << "[" << _putnikID<<"] "<< _imePrezime << " (" << _brojPredjenihMilja << " milja)" << endl;
  27.         }
  28.  
  29.         void Dealociraj()
  30.         {
  31.             delete[] _imePrezime;
  32.             _imePrezime = nullptr;
  33.         }
  34.  
  35.         void DodajPredjeneMilje(int brojMilja)
  36.         {
  37.             _brojPredjenihMilja += brojMilja;
  38.         }
  39. };
  40.  
  41. struct Rezervacija{
  42.  
  43.         Putnik *_putnik;
  44.         int _oznakaSjedista;
  45.         float _cijena;
  46.        
  47.         void Unos(Putnik putnik, int oznaka, float cijena)
  48.         {
  49.             // dodano
  50.             _putnik = new Putnik;
  51.  
  52.             _putnik->Unos(putnik._imePrezime);
  53.             _oznakaSjedista = oznaka;
  54.             _cijena = cijena;
  55.         }
  56.         void Info()
  57.         {
  58.             _putnik->Info();
  59.             cout << "Sjediste: " << _oznakaSjedista << "; Cijena: " << _cijena << endl;
  60.         }
  61.         void Dealociraj()
  62.         {
  63.             _putnik->Dealociraj();
  64.         }
  65. };
  66.  
  67. struct Let{
  68.  
  69.     Kompanija *_kompanija;
  70.     char *_pocetak; //pocetna lokacija
  71.     char *_destinacija;  
  72.     Rezervacija *_rezervacije;
  73.     int _brojMjesta; //maksimalan broj mjesta na letu  
  74.     float _brojMilja; //odnosi se na duzinu leta – broj predjenih milja
  75.     float _cijenaKarte;    
  76.    
  77.     void Unos(Kompanija kompanija, char *pocetak, char *destinacija, int brojMjesta, float brojMilja, float cijena)
  78.     {
  79.         //*_kompanija = kompanija;
  80.        
  81.         int size = strlen(pocetak) + 1;
  82.         _pocetak = new char[size];
  83.         strcpy_s(_pocetak, size, pocetak);
  84.        
  85.         size = strlen(destinacija) + 1;
  86.         _destinacija = new char[size];
  87.         strcpy_s(_destinacija, size, destinacija);
  88.        
  89.         _brojMjesta = brojMjesta;
  90.  
  91.         _rezervacije = new Rezervacija[_brojMjesta];
  92.        
  93.         Putnik* temp = new Putnik;
  94.         temp->Unos("<SLOBODNO MJESTO>");
  95.        
  96.         for (int i = 0; i < _brojMjesta; i++){
  97.             _rezervacije[i].Unos(*temp, i, 0);
  98.             if(i==0)
  99.                 cout << "Inicijalizacija mjesta OK" << endl;
  100.         }
  101.        
  102.         _brojMilja = brojMilja;
  103.         _cijenaKarte = cijena;
  104.  
  105.     }
  106.  
  107.     void Dealociraj()
  108.     {
  109.         /* Definisati funkciju vodeci racuna o oslobadjanju svih resursa koji su alocirani za potrebe objekta tipa Let */
  110.  
  111.  
  112.  
  113.     }
  114.    
  115.     bool AddRezervaciju(Putnik* p)
  116.     {
  117.         // ispis svih slobodnih mjesta
  118.         for(int i=0; i<_brojMjesta; i++){
  119.             if(strcmp(_rezervacije[i]._putnik->_imePrezime, "<SLOBODNO MJESTO>") == 0){
  120.                 cout << _rezervacije[i]._oznakaSjedista << " - ";
  121.             }
  122.         }
  123.  
  124.  
  125.         int izbor = 3;
  126.  
  127.         //int izbor;
  128.         //cout << "\n\nOdaberite sjediste (0-7): ";
  129.         //cin >> izbor;
  130.         //cin.ignore();
  131.  
  132.         float uracunajPopust = 1;
  133.         float ostvareneMilje = p->_brojPredjenihMilja;
  134.  
  135.         if(ostvareneMilje >= 10000 && ostvareneMilje <= 49999)
  136.             uracunajPopust = 0.9;
  137.         else if(ostvareneMilje >= 50000 && ostvareneMilje <= 99000)
  138.             uracunajPopust = 0.8;
  139.         else if(ostvareneMilje >= 100000)
  140.             uracunajPopust = 0.7;
  141.         else
  142.             uracunajPopust = 4;
  143.  
  144.        
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.         for (int i = 0; i < _brojMjesta; i++)
  152.         {
  153.             _rezervacije[i].Info();
  154.             cout << endl;
  155.         }
  156.  
  157.  
  158.  
  159.  
  160.         return true;
  161.        
  162.        
  163.         /*
  164.         Na samom pocetku, funkcija treba ispisati listu svih SLOBODNIH sjedista na letu, te omoguciti odabir nekog od njih.
  165.         Prilikom formiranja cijene karte voditi racuna o broju predjenih milja;
  166.         ako je putnik presao od 10000 do 50000 milja onda ostvaruje popust od 10% na punu cijenu karte (_cijenaKarte),
  167.         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.
  168.         Onemoguciti dodavanje rezervacija sa identicnim putnicima (isti putnikID i imePrezime).
  169.         U zavisnosti od uspjesnosti funkcija vraca true ili false
  170.         */
  171.     }
  172.  
  173.     bool RemoveRezervaciju(int oznakaSjedista)
  174.     {
  175.         /*
  176.         Funkcija uklanja rezervaciju na sjedistu cija je oznaka proslijedjena kao parametar funkcije, te vraca vrijednost.
  177.         U slucaju da oznaceno mjesto nije rezervisano ili ne postoji na tom letu, funkcija vraca vrijednost false
  178.         */
  179.    
  180.  
  181.    
  182.     }
  183. };
  184.  
  185. float GetMiljeByKompanija(Let *letovi, int maxLetova, Kompanija k, Putnik p)
  186. {
  187.     /*funkcija vraca broj milja koje je putnik p ostvario putujuci sa kompanijom k*/
  188.  
  189.  
  190.     return 0;
  191. }
  192.  
  193. void main()
  194. {
  195.     Let let;
  196.     char *pocetak = "Sarajevo";
  197.     char *destinacija = "London";
  198.     int mjesta = 6;
  199.     float milje = 1245;
  200.     float cijena = 100;
  201.  
  202.     // void Unos(Kompanija kompanija, char *pocetak, char *destinacija, int brojMjesta, float brojMilja, float cijena)
  203.     let.Unos(Pegasus, pocetak, destinacija, mjesta, milje, cijena);
  204.    
  205.     /** ================ **/
  206.    
  207.     Putnik* p = new Putnik;
  208.     p->_imePrezime = "Miljana Putnik";
  209.     p->_brojPredjenihMilja = 74000;
  210.  
  211.     let.AddRezervaciju(p);
  212.  
  213.  
  214.  
  215.  
  216.     system("Pause > 0");
  217.  
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement