ivana_andreevska

Zadaca 5

Jun 19th, 2021
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.57 KB | None | 0 0
  1. #include<iostream>
  2. #include<math.h>
  3. #include<ctype.h>
  4. #include<cstring>
  5. using namespace std;
  6.  
  7. class Koncert{
  8. private:
  9.     char naziv[20];
  10.     char lokacija[20];
  11.     double cenaBilet;
  12.     static double sezonskiPopust;
  13. public:
  14.     Koncert(char *naziv="",char *lokacija="", double cenaBilet=0)
  15.     {
  16.         strcpy(this->naziv,naziv);
  17.         strcpy(this->lokacija,lokacija);
  18.         this->cenaBilet = cenaBilet;
  19.     }
  20.  
  21.     virtual double cena()
  22.     {
  23.         return cenaBilet * (1-sezonskiPopust);
  24.     }
  25.  
  26.     static double setSezonskiPopust(double cena)
  27.     {
  28.         sezonskiPopust = cena;
  29.     }
  30.  
  31.     char *getNaziv()
  32.     {
  33.         return naziv;
  34.     }
  35.     static double getSezonskiPopust()
  36.     {
  37.         return sezonskiPopust;
  38.     }
  39.  
  40.  
  41. };
  42. double Koncert::sezonskiPopust = 0.20;
  43.  
  44.  
  45.  
  46. class ElektronskiKoncert: public Koncert{
  47. private:
  48.     char *imeDJ;
  49.     double vremetraenje;
  50.     bool zabava;
  51. public:
  52.     ElektronskiKoncert(char *naziv="",char *lokacija="", double cenaBilet=0, char *imeDJ="", double vremetraenje=0, bool zabava=false)
  53.     :Koncert(naziv,lokacija,cenaBilet)
  54.     {
  55.         this->imeDJ = new char[strlen(imeDJ)+1];
  56.         strcpy(this->imeDJ,imeDJ);
  57.         this->vremetraenje = vremetraenje;
  58.         this->zabava = zabava;
  59.     }
  60.  
  61.     double cena()
  62.     {
  63.         double price = Koncert::cena();
  64.  
  65.         if (vremetraenje > 7)
  66.         {
  67.             price += 360;
  68.         }
  69.         else if(vremetraenje > 5)
  70.         {
  71.             price += 150;
  72.         }
  73.  
  74.         if(zabava == true)
  75.         {
  76.             price = price-50;
  77.         }
  78.         else
  79.             price = price + 100;
  80.  
  81.         return price;
  82.     }
  83.  
  84. };
  85.  
  86. void najskapKoncert(Koncert **koncerti, int n)
  87. {
  88.     double price = koncerti[0]->cena();
  89.     int index = 0;
  90.     int brojKoncerti = 0;
  91.  
  92.  
  93.     for(int i=0; i<n;i++)
  94.     {
  95.         if(price < koncerti[i]->cena())
  96.         {
  97.             price = koncerti[i]->cena();
  98.             index = i;
  99.         }
  100.  
  101.         ElektronskiKoncert *ptr = dynamic_cast<ElektronskiKoncert*>(koncerti[i]);
  102.         if( ptr != 0)
  103.         {
  104.             brojKoncerti++;
  105.         }
  106.     }
  107.  
  108.     cout<<"Najskap koncert: "<<koncerti[index]->getNaziv()<<" "<<price<<endl;
  109.     cout<<"Elektronski koncerti: "<<brojKoncerti<<" od vkupno "<<n<<endl;
  110. }
  111.  
  112.  
  113. bool prebarajKoncert(Koncert ** koncerti, int n, char * naziv, bool elektronski)
  114. {
  115.     bool found = false;
  116.     if(elektronski == true)
  117.     {
  118.         for(int i=0; i<n;i++)
  119.         {
  120.             ElektronskiKoncert *ptr = dynamic_cast<ElektronskiKoncert*>(koncerti[i]);
  121.             if( ptr != 0)
  122.             {
  123.                 if( strcmp(naziv,koncerti[i]->getNaziv())==0 )
  124.                 {
  125.                     cout<<ptr->getNaziv()<<" "<<ptr->cena()<<endl;
  126.                     found = true;
  127.                 }
  128.             }
  129.         }
  130.  
  131.     }
  132.  
  133.     else
  134.     {
  135.         for(int i=0; i<n;i++)
  136.         {
  137.             if( strcmp(naziv,koncerti[i]->getNaziv())==0 )
  138.             {
  139.                 cout<<koncerti[i]->getNaziv()<<" "<<koncerti[i]->cena()<<endl;
  140.                 found = true;
  141.             }
  142.         }
  143.     }
  144.  
  145.  
  146.     return found;
  147. }
  148.  
  149.  
  150.  
  151. int main(){
  152.  
  153.     int tip,n,novaCena;
  154.     char naziv[100], lokacija[100], imeDJ[40];
  155.     bool dnevna;
  156.     float cenaBilet, novPopust;
  157.     float casovi;
  158.  
  159.         cin>>tip;
  160.         if (tip==1){//Koncert
  161.             cin>>naziv>>lokacija>>cenaBilet;
  162.             Koncert k1(naziv,lokacija,cenaBilet);
  163.             cout<<"Kreiran e koncert so naziv: "<<k1.getNaziv()<<endl;
  164.         }
  165.         else if (tip==2){//cena - Koncert
  166.             cin>>naziv>>lokacija>>cenaBilet;
  167.             Koncert k1(naziv,lokacija,cenaBilet);
  168.             cout<<"Osnovna cena na koncertot so naziv "<<k1.getNaziv()<< " e: " <<k1.cena()<<endl;
  169.         }
  170.         else if (tip==3){//ElektronskiKoncert
  171.             cin>>naziv>>lokacija>>cenaBilet>>imeDJ>>casovi>>dnevna;
  172.             ElektronskiKoncert s(naziv,lokacija,cenaBilet,imeDJ,casovi,dnevna);
  173.             cout<<"Kreiran e elektronski koncert so naziv "<<s.getNaziv()<<" i sezonskiPopust "<<s.getSezonskiPopust()<<endl;
  174.         }
  175.         else if (tip==4){//cena - ElektronskiKoncert
  176.              cin>>naziv>>lokacija>>cenaBilet>>imeDJ>>casovi>>dnevna;
  177.              ElektronskiKoncert s(naziv,lokacija,cenaBilet,imeDJ,casovi,dnevna);
  178.              cout<<"Cenata na elektronskiot koncert so naziv "<<s.getNaziv()<<" e: "<<s.cena()<<endl;
  179.         }
  180.         else if (tip==5) {//najskapKoncert
  181.  
  182.         }
  183.         else if (tip==6) {//prebarajKoncert
  184.             Koncert ** koncerti = new Koncert *[5];
  185.             int n;
  186.             koncerti[0] = new Koncert("Area","BorisTrajkovski",350);
  187.             koncerti[1] = new ElektronskiKoncert("TomorrowLand","Belgium",8000,"Afrojack",7.5,false);
  188.             koncerti[2] = new ElektronskiKoncert("SeaDance","Budva",9100,"Tiesto",5,true);
  189.             koncerti[3] = new Koncert("Superhiks","PlatoUkim",100);
  190.             koncerti[4] = new ElektronskiKoncert("CavoParadiso","Mykonos",8800,"Guetta",3,true);
  191.             char naziv[100];
  192.             najskapKoncert(koncerti,5);
  193.         }
  194.         else if (tip==7){//prebaraj
  195.               Koncert ** koncerti = new Koncert *[5];
  196.             int n;
  197.             koncerti[0] = new Koncert("Area","BorisTrajkovski",350);
  198.             koncerti[1] = new ElektronskiKoncert("TomorrowLand","Belgium",8000,"Afrojack",7.5,false);
  199.             koncerti[2] = new ElektronskiKoncert("SeaDance","Budva",9100,"Tiesto",5,true);
  200.             koncerti[3] = new Koncert("Superhiks","PlatoUkim",100);
  201.             koncerti[4] = new ElektronskiKoncert("CavoParadiso","Mykonos",8800,"Guetta",3,true);
  202.             char naziv[100];
  203.             bool elektronski;
  204.             cin>>elektronski;
  205.             if(prebarajKoncert(koncerti,5, "Area",elektronski))
  206.                 cout<<"Pronajden"<<endl;
  207.             else cout<<"Ne e pronajden"<<endl;
  208.  
  209.             if(prebarajKoncert(koncerti,5, "Area",!elektronski))
  210.                 cout<<"Pronajden"<<endl;
  211.             else cout<<"Ne e pronajden"<<endl;
  212.  
  213.         }
  214.         else if (tip==8){//smeni cena
  215.               Koncert ** koncerti = new Koncert *[5];
  216.             int n;
  217.             koncerti[0] = new Koncert("Area","BorisTrajkovski",350);
  218.             koncerti[1] = new ElektronskiKoncert("TomorrowLand","Belgium",8000,"Afrojack",7.5,false);
  219.             koncerti[2] = new ElektronskiKoncert("SeaDance","Budva",9100,"Tiesto",5,true);
  220.             koncerti[3] = new Koncert("Superhiks","PlatoUkim",100);
  221.             koncerti[2] -> setSezonskiPopust(0.9);
  222.             najskapKoncert(koncerti,4);
  223.         }
  224.  
  225.     return 0;
  226. }
Advertisement
Add Comment
Please, Sign In to add comment