Advertisement
metalni

OOP Zadaci za vezbanje 2 Koncerti

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