Advertisement
Josif_tepe

Untitled

Dec 18th, 2024
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.15 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Restoran {
  6. private:
  7.     char * ime;
  8.     char * adresa;
  9.     int godina_na_osnovanje;
  10.     float dohod;
  11.     float prodadeni_vafli;
  12.     char odgovorno_lice[100];
  13.    
  14. public:
  15.     Restoran() {
  16.         ime = new char[100];
  17.         adresa = new char[100];
  18.     }
  19.     Restoran(const char * _ime, const char * _adresa, int _godina_na_osnovanje, float _dohod, float _prodadeni_vafli, char  * _odgovorno_lice) {
  20.         ime = new char[(strlen(_ime))];
  21.         strcpy(ime, _ime);
  22.        
  23.         adresa = new char[strlen(_adresa)];
  24.         strcpy(adresa, _adresa);
  25.        
  26.         godina_na_osnovanje = _godina_na_osnovanje;
  27.         dohod = _dohod;
  28.         prodadeni_vafli = _prodadeni_vafli;
  29.         strcpy(odgovorno_lice, _odgovorno_lice);
  30.     }
  31.    
  32.     Restoran(const Restoran & tmp) {
  33.         ime = new char[(strlen(tmp.ime))];
  34.         strcpy(ime, tmp.ime);
  35.        
  36.         adresa = new char[strlen(tmp.adresa)];
  37.         strcpy(adresa, tmp.adresa);
  38.        
  39.         godina_na_osnovanje = tmp.godina_na_osnovanje;
  40.         dohod = tmp.dohod;
  41.         prodadeni_vafli = tmp.prodadeni_vafli;
  42.         strcpy(odgovorno_lice, tmp.odgovorno_lice);
  43.     }
  44.     Restoran  & operator = (const Restoran & tmp) {
  45.         ime = new char[(strlen(tmp.ime))];
  46.         strcpy(ime, tmp.ime);
  47.        
  48.         adresa = new char[strlen(tmp.adresa)];
  49.         strcpy(adresa, tmp.adresa);
  50.        
  51.         godina_na_osnovanje = tmp.godina_na_osnovanje;
  52.         dohod = tmp.dohod;
  53.         prodadeni_vafli = tmp.prodadeni_vafli;
  54.         strcpy(odgovorno_lice, tmp.odgovorno_lice);
  55.        
  56.         return *this;
  57.     }
  58.     ~Restoran() {
  59.         delete[] ime;
  60.         delete [] adresa;
  61.     }
  62.     bool operator >= (Restoran tmp) {
  63.         if(dohod >= tmp.dohod) {
  64.             return true;
  65.         }
  66.         return false;
  67.     }
  68.     friend istream & operator >> (istream & stream, Restoran & tmp);
  69.     virtual float presmetaj_dohod()  {
  70.         return dohod;
  71.     }
  72.     virtual void print() {
  73.         cout << ime << " " << adresa << " " << godina_na_osnovanje << " " << dohod << " " << prodadeni_vafli << " "<< odgovorno_lice << endl;
  74.     }
  75. };
  76.  
  77. class RestoranBezIsporaka : public Restoran {
  78. private:
  79.     string najpopularna_vafla;
  80.     string tip_na_zacini;
  81.     float rejting;
  82.     float zarabotka;
  83.    
  84. public:
  85.     RestoranBezIsporaka() : Restoran(){}
  86.     RestoranBezIsporaka(char * _ime, char * _adresa, int _godina_na_osnovanje, float _dohod, float _prodadeni_vafli, char  * _odgovorno_lice, string _najpopularna_vafla, string _tip_na_zacini, float _rating, float _zarabotka) : Restoran(_ime, _adresa, _godina_na_osnovanje, _dohod, _prodadeni_vafli, _odgovorno_lice){
  87.         najpopularna_vafla = _najpopularna_vafla;
  88.         tip_na_zacini = _tip_na_zacini;
  89.         rejting = _rating;
  90.         zarabotka = _zarabotka;
  91.     }
  92.     RestoranBezIsporaka(const RestoranBezIsporaka & tmp) : Restoran(tmp) {
  93.         najpopularna_vafla = tmp.najpopularna_vafla;
  94.         tip_na_zacini = tmp.tip_na_zacini;
  95.         rejting = tmp.rejting;
  96.         zarabotka = tmp.zarabotka;
  97.        
  98.     }
  99.     virtual float presmetaj_dohod() override {
  100.         float osnoven_dohod = Restoran::presmetaj_dohod();
  101.         if(zarabotka >= 40000) {
  102.             float result = osnoven_dohod + (0.15 * zarabotka);
  103.             return result;
  104.         }
  105.         return osnoven_dohod;
  106.     }
  107.     virtual void print() override {
  108.         Restoran::print();
  109.         cout << najpopularna_vafla << " " << tip_na_zacini << " " << rejting << " " << zarabotka << endl;
  110.     }
  111. };
  112. class RestoranSoIsoraka : public Restoran {
  113. private:
  114.     string najklikana;
  115.     string komentari;
  116.     string webstrana;
  117.     float rejting;
  118. public:
  119.     RestoranSoIsoraka() : Restoran() {
  120.        
  121.     }
  122.     RestoranSoIsoraka(char * _ime, char * _adresa, int _godina_na_osnovanje, float _dohod, float _prodadeni_vafli, char  * _odgovorno_lice, string _najklikana, string _komentari, string _webstrana, float _rejting) : Restoran(_ime, _adresa, _godina_na_osnovanje, _dohod, _prodadeni_vafli, _odgovorno_lice){
  123.         najklikana = _najklikana;
  124.         komentari = _komentari;
  125.         webstrana  = _webstrana;
  126.         rejting = _rejting;
  127.        
  128.     }
  129.     RestoranSoIsoraka(RestoranSoIsoraka & tmp) : Restoran(tmp) {
  130.         najklikana = tmp.najklikana;
  131.         komentari = tmp.komentari;
  132.         webstrana  = tmp.webstrana;
  133.         rejting = tmp.rejting;
  134.     }
  135.    
  136.     virtual float presmetaj_dohod() override{
  137.         float osnoven_dohod = Restoran::presmetaj_dohod();
  138.         if(rejting > 3) {
  139.             return osnoven_dohod * rejting;
  140.         }
  141.         return osnoven_dohod;
  142.     }
  143.     virtual void print() override {
  144.         Restoran::print();
  145.         cout << najklikana << " " << komentari << " " << webstrana << " "<< rejting << endl;
  146.     }
  147. };
  148.  
  149. istream & operator >> (istream & stream, Restoran & tmp) {
  150.     char _ime[100], _adresa[100];
  151.     stream >> _ime;
  152.     stream >> _adresa;
  153.     tmp.ime = new char[strlen(_ime)];
  154.     strcpy(tmp.ime, _ime);
  155.     tmp.adresa = new char[strlen(_adresa)];
  156.     strcpy(tmp.adresa, _adresa);
  157.                            
  158.     stream >> tmp.godina_na_osnovanje;
  159.     stream >> tmp.dohod;
  160.     stream >> tmp.prodadeni_vafli;
  161.     stream >> tmp.odgovorno_lice;
  162.     return stream;
  163. }
  164.  
  165. void najgolem_dohod(int n, Restoran ** restorani) {
  166.     float najgolem_dohod = 0.0;
  167.    
  168.     for(int i = 0; i < n; i++) {
  169.         if(restorani[i]->presmetaj_dohod() > najgolem_dohod) {
  170.             najgolem_dohod = restorani[i]->presmetaj_dohod();
  171.         }
  172.     }
  173.    
  174.     for(int i  =0; i < n; i++) {
  175.         if(restorani[i]->presmetaj_dohod() == najgolem_dohod) {
  176.             restorani[i]->print();
  177.         }
  178.     }
  179. }
  180. int main()
  181. {
  182.     Restoran * restorani[3];
  183.     restorani[0] = new RestoranSoIsoraka("gino", "centar", 1900, 500, 50, "lice", "krem", "dobri", "www.gino.mk", 4.5);
  184.    
  185.      
  186.     restorani[1] = new RestoranBezIsporaka("abc", "karpos", 2000, 600, 50, "abc", "nutela", "seakkvi", 10.5, 20000);
  187.     restorani[2] = new Restoran("rew", "aerodrom", 2025, 1000, 80, "rew");
  188.    
  189.     najgolem_dohod(3, restorani);
  190.    
  191.    
  192.  
  193.     return 0;
  194.  
  195. }
  196.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement