Josif_tepe

Untitled

Sep 13th, 2026
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.61 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Film {
  5. private:
  6.     char * naslov;
  7.     char * ime_prezime;
  8.     int godina_na_izdavanje;
  9.     int broj_sedista;
  10.     int broj_na_bileti;
  11.     float cena;
  12.    
  13. public:
  14.     Film() {}
  15.     Film(const char  *naslov, const char * ime_prezime, int godina_na_izdavanje, int broj_na_sedista, int broj_na_bileti, float cena) {
  16.         this->godina_na_izdavanje = godina_na_izdavanje;
  17.         this->broj_sedista = broj_na_sedista;
  18.         this->broj_na_bileti = broj_na_bileti;
  19.         this->cena = cena;
  20.        
  21.         this->naslov = new char[strlen(naslov)];
  22.         strcpy(this->naslov, naslov);
  23.         this->ime_prezime = new char[strlen(ime_prezime)];
  24.         strcpy(this->ime_prezime, ime_prezime);
  25.     }
  26.    
  27.     Film(const Film &tmp) {
  28.         this->godina_na_izdavanje = tmp.godina_na_izdavanje;
  29.         this->broj_sedista = tmp.broj_sedista;
  30.         this->broj_na_bileti = tmp.broj_na_bileti;
  31.         this->cena = tmp.cena;
  32.        
  33.         this->naslov = new char[strlen(tmp.naslov)];
  34.         strcpy(this->naslov, tmp.naslov);
  35.         this->ime_prezime = new char[strlen(tmp.ime_prezime)];
  36.         strcpy(this->ime_prezime, tmp.ime_prezime);
  37.     }
  38.    
  39.     Film & operator = (Film tmp) {
  40.         this->godina_na_izdavanje = tmp.godina_na_izdavanje;
  41.         this->broj_sedista = tmp.broj_sedista;
  42.         this->broj_na_bileti = tmp.broj_na_bileti;
  43.         this->cena = tmp.cena;
  44.        
  45.         this->naslov = new char[strlen(tmp.naslov)];
  46.         strcpy(this->naslov, tmp.naslov);
  47.         this->ime_prezime = new char[strlen(tmp.ime_prezime)];
  48.         strcpy(this->ime_prezime, tmp.ime_prezime);
  49.         return *this;
  50.     }
  51.     ~Film() {
  52.         delete[] naslov;
  53.         delete[] ime_prezime;
  54.     }
  55.     float get_cena() {
  56.         return cena;
  57.     }
  58.    
  59.     friend istream & operator >> (istream & stream, Film & f);
  60.    
  61.     bool operator >= (Film & f) {
  62.         if(cena >= f.cena) {
  63.             return true;
  64.         }
  65.         return false;
  66.     }
  67.    
  68.     virtual float cena_na_bilet() {
  69.         return cena;
  70.     }
  71.    
  72.     int get_sedista() {
  73.         return broj_sedista;
  74.     }
  75.     int get_bilet() {
  76.         return broj_na_bileti;
  77.     }
  78.    
  79.     virtual void print() {
  80.         cout << naslov << " " << ime_prezime << " " << godina_na_izdavanje << " " << broj_sedista << " " << broj_na_bileti << " " << endl;
  81.        
  82.         cout << "Osnovna cena: " << cena << endl;
  83.     }
  84. };
  85.  
  86. istream & operator >> (istream & stream, Film & f) {
  87.     char c[2000];
  88.     stream >> c;
  89.     f.naslov = new char[strlen(c)];
  90.     strcpy(f.naslov, c);
  91.    
  92.     char c2[2000];
  93.     stream >> c2;
  94.     f.ime_prezime = new char[strlen(c2)];
  95.     strcpy(f.ime_prezime, c2);
  96.     stream >> f.godina_na_izdavanje >> f.broj_sedista >> f.broj_na_bileti >> f.cena;
  97.    
  98.     return stream;
  99. }
  100.  
  101. class IgranFilm : public Film {
  102. private:
  103.     bool promicija;
  104.     float popust;
  105.    
  106. public:
  107.     IgranFilm() : Film() {}
  108.     IgranFilm(const char  *naslov, const char * ime_prezime, int godina_na_izdavanje, int broj_na_sedista, int broj_na_bileti, float cena, bool promocija, float popust) : Film(naslov, ime_prezime, godina_na_izdavanje, broj_na_bileti, broj_na_bileti, cena) {
  109.         this->promicija = promocija;
  110.         this->popust = popust;
  111.     }
  112.     IgranFilm(const IgranFilm & tmp) : Film(tmp) {
  113.         this->promicija = tmp.promicija;
  114.         this->popust = tmp.popust;
  115.     }
  116.     ~IgranFilm() {}
  117.    
  118.     virtual float cena_na_bilet() override {
  119.         float c = Film::cena_na_bilet();
  120.         if(promicija) {
  121.             c = c - (popust / 100.0 * c);
  122.         }
  123.         if(get_sedista() - get_bilet() >= 50) {
  124.             c = (c - 0.1*c);
  125.         }
  126.        
  127.         return c;
  128.     }
  129.    
  130.     virtual void print() override {
  131.         Film::print();
  132.        
  133.         if(promicija) {
  134.             cout << "PROMOCIJA: " << popust << endl;
  135.         }
  136.         cout << "MOMENTALNA CENA: " << cena_na_bilet() << endl;
  137.     }
  138. };
  139.  
  140. enum Nagrada {NEMA_NAGRADA, NACIONALNA_NAGRADA, MEGJUNARODNA};
  141. class DokumentarenFilm : public Film {
  142. private:
  143.     Nagrada nagrada;
  144.    
  145. public:
  146.     DokumentarenFilm() : Film() {}
  147.     DokumentarenFilm(const char  *naslov, const char * ime_prezime, int godina_na_izdavanje, int broj_na_sedista, int broj_na_bileti, float cena, Nagrada nagrada) : Film(naslov, ime_prezime, godina_na_izdavanje, broj_na_bileti, broj_na_bileti, cena) {
  148.         this->nagrada = nagrada;
  149.     }
  150.    
  151.     DokumentarenFilm(const DokumentarenFilm & tmp) : Film(tmp) {
  152.         this->nagrada = tmp.nagrada;
  153.     }
  154.     ~DokumentarenFilm () {}
  155.    
  156.     virtual float cena_na_bilet() override {
  157.         float c = Film::cena_na_bilet();
  158.         if(nagrada == NACIONALNA_NAGRADA) {
  159.             c += (0.1 * c);
  160.         }
  161.         else if(nagrada == MEGJUNARODNA) {
  162.             c += (0.2 * c);
  163.         }
  164.        
  165.         return c;
  166.     }
  167.    
  168.     virtual void print() override {
  169.         Film::print();
  170.        
  171.         if(nagrada == NEMA_NAGRADA) {
  172.             cout << "BEZ NAGRADA" << endl;
  173.         }
  174.         else if(nagrada == NACIONALNA_NAGRADA) {
  175.             cout << "NACIONALNA NAGRADA" << endl;
  176.         }
  177.         else {
  178.             cout << "MEGUNARODNA NAGRADA" << endl;
  179.         }
  180.        
  181.         cout << "MOMENTALNA CENA " << cena_na_bilet() << endl;
  182.     }
  183. };
  184.  
  185. void film_so_najgolem_popust(Film ** niza, int n) {
  186.     float najgolem_popust = -99999999.0;
  187.     for(int i = 0; i < n; i++) {
  188.         float momentalna_cena = niza[i]->cena_na_bilet();
  189.         float osnovna_cena = niza[i]->get_cena();
  190.        
  191.         float popust = momentalna_cena - osnovna_cena;
  192.        
  193.         if(popust > najgolem_popust) {
  194.             najgolem_popust = popust;
  195.         }
  196.     }
  197.    
  198.     for(int i = 0; i < n; i++) {
  199.         float momentalna_cena = niza[i]->cena_na_bilet();
  200.         float osnovna_cena = niza[i]->get_cena();
  201.        
  202.         float popust = momentalna_cena - osnovna_cena;
  203.        
  204.         if(popust == najgolem_popust) {
  205.             niza[i]->print();
  206.         }
  207.     }
  208.    
  209.    
  210. }
  211. int main() {
  212.     Film* filmovi[4];
  213.     filmovi[0] = new IgranFilm("Inception", "Chris Nolan", 2010, 200, 40, 300, true, 20);
  214.     filmovi[1] = new IgranFilm("Interstellar", "Chris NOlan", 2014, 200, 120, 350, false, 0);
  215.     filmovi[2] = new DokumentarenFilm("Planet", "David", 2006, 150, 100, 250, MEGJUNARODNA);
  216.     filmovi[3] = new DokumentarenFilm("Ocean", "David", 2017, 350, 100, 250, NACIONALNA_NAGRADA);
  217.    
  218.     film_so_najgolem_popust(filmovi, 4);
  219.    
  220.     cout << endl;
  221.     for(int i = 0; i < 4; i++) {
  222.         filmovi[i]->print();
  223.     }
  224.    
  225.     return 0;
  226. }
  227.  
Add Comment
Please, Sign In to add comment