Advertisement
developer10

Untitled

Jun 27th, 2015
246
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.                _putnik->Unos(putnik._imePrezime);
  49.                _oznakaSjedista = oznaka;
  50.                _cijena = cijena;
  51.         }
  52.         void Info()
  53.         {
  54.             _putnik->Info();
  55.             cout << "Sjediste: " << _oznakaSjedista << " Cijena: " << _cijena << endl;
  56.         }
  57.         void Dealociraj()
  58.         {
  59.             _putnik->Dealociraj();
  60.         }
  61. };
  62.  
  63. struct Let{
  64.  
  65.     Kompanija *_kompanija;
  66.     char *_pocetak; //pocetna lokacija
  67.     char *_destinacija;  
  68.     Rezervacija *_rezervacije;
  69.     int _brojMjesta; //maksimalan broj mjesta na letu  
  70.     float _brojMilja; //odnosi se na duzinu leta – broj predjenih milja
  71.     float _cijenaKarte;    
  72.    
  73.     void Unos(Kompanija kompanija, char *pocetak, char *destinacija, int brojMjesta, float brojMilja, float cijena)
  74.     {
  75.         *_kompanija = kompanija;
  76.        
  77.         int size = strlen(pocetak) + 1;
  78.         _pocetak = new char[size];
  79.         strcpy_s(_pocetak, size, pocetak);
  80.        
  81.         size = strlen(destinacija) + 1;
  82.         _destinacija = new char[size];
  83.         strcpy_s(_destinacija, size, destinacija);
  84.        
  85.         _brojMjesta = brojMjesta;
  86.  
  87.         _rezervacije = new Rezervacija[_brojMjesta];
  88.        
  89.         Putnik *temp;
  90.         temp->Unos("<SLOBODNO MJESTO>");    // Ε TA RADI OVA LINIJA?
  91.                                             // Ako unosi putnika, koji umjesto imena ima vrijednost <SLOBODNO MJESTO>
  92.                                             // ne bi li bilo logicno da se nalazi u donjoj for petlji?
  93.                                             // Ovako kako stoji, buduci da je ovo poziv funkcije Unos od strukture Let,
  94.                                             // izvrsice se samo jednom, dakle pri kreiranju leta.
  95.        
  96.         for (int i = 0; i < _brojMjesta; i++){
  97.             // temp[i]->Unos("<SLOBODNO MJESTO>"); OVAKO TO ZAMISLJAM,  s tim da bi onda iznad bilo potrebno
  98.                                                     // inicijalizovati niz ovako:   Putnik *temp = new Putnik[_brojMjesta];
  99.             _rezervacije[i].Unos(*temp, i, 0);
  100.         }
  101.         _brojMilja = brojMilja;
  102.         _cijenaKarte = cijena;
  103.  
  104.     }
  105.  
  106.     void Dealociraj(){
  107.         /* Definisati funkciju vodeci racuna o oslobadjanju svih resursa koji su alocirani za potrebe objekta tipa Let */
  108.  
  109.  
  110.  
  111.     }
  112.    
  113.     bool AddRezervaciju(Putnik *p)
  114.     {
  115.         //_rezervacije->Unos();
  116.        
  117.        
  118.         /*
  119.         Na samom pocetku, funkcija treba ispisati listu svih SLOBODNIH sjedista na letu, te omoguciti odabir nekog od njih.
  120.         Prilikom formiranja cijene karte voditi racuna o broju predjenih milja;
  121.         ako je putnik presao od  10000 do 50000 milja onda ostvaruje popust od 10% na punu cijenu karte (_cijenaKarte),
  122.         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.
  123.         Onemoguciti dodavanje rezervacija sa identicnim putnicima (isti putnikID i imePrezime).
  124.         U zavisnosti od uspjesnosti funkcija vraca true ili false
  125.         */
  126.     }
  127.  
  128.     bool RemoveRezervaciju(int oznakaSjedista)
  129.     {
  130.         /*
  131.         Funkcija uklanja rezervaciju na sjedistu cija je oznaka proslijedjena kao parametar funkcije, te vraca vrijednost.
  132.         U slucaju da oznaceno mjesto nije rezervisano ili ne postoji na tom letu, funkcija vraca vrijednost false
  133.         */
  134.    
  135.  
  136.    
  137.     }
  138. };
  139.  
  140. float GetMiljeByKompanija(Let *letovi, int maxLetova, Kompanija k, Putnik p)
  141. {
  142.     /*funkcija vraca broj milja koje je putnik p ostvario putujuci sa kompanijom k*/
  143.  
  144.  
  145.     return 0;
  146. }
  147.  
  148. void main()
  149. {
  150.     Let let;
  151.     char *pocetak = "Sarajevo";
  152.     char *destinacija = "London";
  153.     int mjesta = 50;
  154.     float milje = 1190;
  155.     float cijena = 149.0;
  156.  
  157.     // void Unos(Kompanija kompanija, char *pocetak, char *destinacija, int brojMjesta, float brojMilja, float cijena)
  158.     let.Unos(Pegasus, pocetak, destinacija, mjesta, milje, cijena);
  159.    
  160.  
  161.     /** ================ **/
  162.    
  163.  
  164.  
  165.  
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement