metalni

OOP Labs 4 Zadaca 3

May 30th, 2020
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. //Vasiot kod tuka
  7.  
  8. class Pica{
  9. private:
  10.    
  11.     char ime[15];
  12.     int cena;
  13.     char *sostojki;
  14.     int namaluvanje=0;
  15.    
  16. public:
  17.    
  18.     Pica(char* ime="",int cena=0,char* sostojki="",int namaluvanje=0){
  19.         strncpy(this->ime,ime,15);
  20.         this->cena=cena;
  21.         this->namaluvanje=namaluvanje;
  22.         this->sostojki=new char [strlen(sostojki)+1];
  23.         strcpy(this->sostojki,sostojki);
  24.     }
  25.    
  26.     Pica(const Pica &p){
  27.         strncpy(this->ime,p.ime,15);
  28.         this->cena=p.cena;
  29.         this->namaluvanje=p.namaluvanje;
  30.         this->sostojki=new char [strlen(p.sostojki)+1];
  31.         strcpy(this->sostojki,p.sostojki);
  32.     }
  33.    
  34.     Pica& operator=(const Pica& p){
  35.         if(this!=&p){
  36.             strncpy(this->ime,p.ime,15);
  37.             this->cena=p.cena;
  38.             this->namaluvanje=p.namaluvanje;
  39.             this->sostojki=new char [strlen(p.sostojki)+1];
  40.             strcpy(this->sostojki,p.sostojki);
  41.         }
  42.         return *this;
  43.     }
  44.    
  45.     ~Pica(){
  46.         delete [] sostojki;
  47.     }
  48.    
  49.     void pecati(){
  50.         cout<<ime<<" - "<<sostojki<<", "<<cena<<" ";
  51.         if(namaluvanje>0&&namaluvanje<=100){
  52.             cout<<cena-cena*namaluvanje/100<<endl;
  53.         }
  54.     }
  55.    
  56.     bool istiSe(Pica &p){
  57.         if(strcmp(this->sostojki,p.sostojki)==0) return true;
  58.         else return false;
  59.     }
  60.    
  61.     char* getSostojki(){
  62.         return sostojki;
  63.     }
  64.    
  65.     int getNamaluvanje(){
  66.         return namaluvanje;
  67.     }
  68.    
  69. };
  70.  
  71. class Picerija{
  72. private:
  73.     char ime[15];
  74.     Pica *pici;
  75.     int brojPici;
  76. public:
  77.     Picerija(){}
  78.    
  79.     Picerija(char *ime){
  80.         strncpy(this->ime,ime,15);
  81.         pici=new Pica [0];
  82.         brojPici=0;
  83.     }
  84.    
  85.     Picerija(const Picerija& p){
  86.         strncpy(this->ime,p.ime,15);
  87.         this->brojPici=p.brojPici;
  88.         this->pici=new Pica [brojPici];
  89.         for(int i=0;i<brojPici;i++){
  90.             this->pici[i]=p.pici[i];
  91.         }
  92.     }
  93.    
  94.     ~Picerija(){
  95.         delete [] pici;
  96.     }
  97.    
  98.     void dodadi(Pica &p){
  99.         int flag=0;
  100.         for(int i=0;i<brojPici;i++){
  101.             if(strcmp(this->pici[i].getSostojki(),p.getSostojki())==0){
  102.                 flag=1;
  103.             }
  104.         }
  105.         if(flag==0){
  106.             Pica *tmp=new Pica[brojPici];
  107.             for(int i=0;i<brojPici;i++){
  108.                 tmp[i]=this->pici[i];
  109.             }
  110.             delete [] this->pici;
  111.             this->pici=new Pica[brojPici+1];
  112.             for(int i=0;i<brojPici;i++){
  113.                 this->pici[i]=tmp[i];
  114.             }
  115.             this->pici[brojPici]=p;
  116.             delete [] tmp;
  117.             brojPici++;
  118.         }
  119.     }
  120.    
  121.     char* getIme(){
  122.         return this->ime;
  123.     }
  124.    
  125.     void piciNaPromocija(){
  126.         for(int i=0;i<brojPici;i++){
  127.             if((this->pici[i].getNamaluvanje())!=0){
  128.                 this->pici[i].pecati();
  129.             }
  130.         }
  131.     }
  132.    
  133.     void setIme(char* ime){
  134.         strncpy(this->ime,ime,15);
  135.     }
  136.    
  137.    
  138. };
  139.  
  140. int main () {
  141.  
  142.     int n;
  143.     char ime[15];
  144.     cin >> ime;
  145.     cin >> n;
  146.  
  147.     Picerija p1(ime);
  148.     for(int i = 0; i < n; i++){
  149.         char imp[100];
  150.         cin.get();
  151.         cin.getline(imp,100);
  152.         int cena;
  153.         cin >> cena;
  154.         char sostojki[100];
  155.         cin.get();
  156.         cin.getline(sostojki,100);
  157.         int popust;
  158.         cin >> popust;
  159.         Pica p(imp,cena,sostojki,popust);
  160.         p1.dodadi(p);
  161.     }
  162.  
  163.     Picerija p2 = p1;
  164.     cin >> ime;
  165.     p2.setIme(ime);
  166.     char imp[100];
  167.     cin.get();
  168.     cin.getline(imp,100);
  169.     int cena;
  170.     cin >> cena;
  171.     char sostojki[100];
  172.     cin.get();
  173.     cin.getline(sostojki,100);
  174.     int popust;
  175.     cin >> popust;
  176.     Pica p(imp,cena,sostojki,popust);
  177.     p2.dodadi(p);
  178.  
  179.     cout<<p1.getIme()<<endl;
  180.     cout<<"Pici na promocija:"<<endl;
  181.     p1.piciNaPromocija();
  182.  
  183.     cout<<p2.getIme()<<endl;
  184.     cout<<"Pici na promocija:"<<endl;
  185.     p2.piciNaPromocija();
  186.  
  187.     return 0;
  188.    
  189. }
Add Comment
Please, Sign In to add comment