SlavkovB

Пицерија OOP

Jun 8th, 2016
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.13 KB | None | 0 0
  1. Пицерија (0 / 0)
  2. Да се дефинира класа Пица за која ќе се чуваат податоци за (5 поени):
  3.  
  4. име на пицата (низа од 15 знаци)
  5. цена (цел број)
  6. состојки (динамички алоцирана низа од знаци)
  7. намалување на цената во проценти (цел број) - ако пицата не е на промоција намалувањето има вредност нула, во спротивно, вредност поголема од нула и не поголема од 100.
  8. За потребите на оваа класа да се креираат потребните конструктори и да се напише соодветен деструктор. (10 поени) Дополнително за оваа класа да се дефинира функцијата:
  9.  
  10. pecati() - функција во која ќе се печатат податоците за пицата во следниот формат: име - состојки, цена. (5 поени)
  11. istiSe(Pica p) - функција за споредба на две пици според состојките (5 поени):
  12. Да се дефинира класа Picerija во која се чуваат (5 поени):
  13.  
  14. име (низа од максимум 15 знаци)
  15. динмички алоцирана низа од објекти од класата Pica
  16. број на пици (цел број)
  17. За потребите на оваа класа да се дефинираат потребните конструктори и да се напише соодветен деструктор. (10 поени) Да се имплементираат и следниве методи:
  18.  
  19. dodadi (Pica P) - за додавање нова пица во пицеријата, но само ако не постои иста во низата (нема пица со исти состојки со пицата што треба да се додаде). (10 поени)
  20. void piciNaPromocija() - се печатат сите пици од пицеријата што се на промоција во формат : име - состојки, цена, цена со попуст. (10 поени)
  21.  
  22. Sample input
  23. FINKI-Pica
  24. 4
  25. Margarita
  26. 200
  27. Domaten sos, kaskaval, maslinovo maslo
  28. 0
  29. Napolitana
  30. 210
  31. Domaten sos, kaskaval, svezi sampinjoni, maslinovo maslo
  32. 0
  33. Kapricioza
  34. 210
  35. Domaten sos, kaskaval, sunka, svezi sampinjoni
  36. 30
  37. Vegetarijana
  38. 230
  39. Domaten sos, kaskaval, tikvici, svezi sampinjoni, piperka, domat, maslinki, rukola, pcenka
  40. 20
  41. Pica-FINKI
  42. Tuna
  43. 230
  44. Domaten sos, kaskaval, pcenka, maslinki, tuna, rukola
  45. 0
  46.  
  47. Sample output
  48. FINKI-Pica
  49. Pici na promocija:
  50. Kapricioza  - Domaten sos, kaskaval, sunka, svezi sampinjoni, 210 147
  51. Vegetarijana - Domaten sos, kaskaval, tikvici, svezi sampinjoni, piperka, domat, maslinki, rukola, pcenka, 230 184
  52. Pica-FINKI
  53. Pici na promocija:
  54. Kapricioza  - Domaten sos, kaskaval, sunka, svezi sampinjoni, 210 147
  55. Vegetarijana - Domaten sos, kaskaval, tikvici, svezi sampinjoni, piperka, domat, maslinki, rukola, pcenka, 230 184
  56.  
  57.  
  58. //CODE//
  59.  
  60.  
  61. #include <iostream>
  62. #include <cstring>
  63.  
  64. using namespace std;
  65.  
  66. class Pica{
  67.  
  68.     char ime[15];
  69.     int cena;
  70.     char *sostojki;
  71.     int popust;
  72. public:
  73.     Pica(){}
  74.     Pica(const char *ime, int cena, const char *sostojki, int popust){
  75.     strcpy(this -> ime, ime);
  76.     this -> cena = cena;
  77.     this -> sostojki = new char[strlen(sostojki) + 1];
  78.     strcpy(this -> sostojki, sostojki);
  79.     this -> popust = popust;
  80.     }
  81.    
  82.     Pica(const Pica &p){
  83.     strcpy(this -> ime, p.ime);
  84.     this -> cena = p.cena;
  85.     this -> sostojki = new char[strlen(p.sostojki) + 1];
  86.     strcpy(this -> sostojki, p.sostojki);
  87.     this -> popust = p.popust;
  88.     }
  89.  
  90.     Pica &operator=(const Pica &p){
  91.         if(this != &p){    strcpy(this -> ime, p.ime);
  92.     this -> cena = p.cena;
  93.     delete [] sostojki;
  94.     sostojki = new char[strlen(p.sostojki) + 1];
  95.     strcpy(this -> sostojki, p.sostojki);
  96.     this -> popust = p.popust;
  97. }
  98.    return *this;
  99.     }
  100.    void pecati ()
  101.     {
  102.         cout<<ime<<" - "<<sostojki<<", "<<cena<<" "<<cena - (float(popust*cena)/100)<<endl;
  103.     }
  104.  
  105.     bool istiSe(Pica p){
  106.         if (!strcmp(sostojki, p.sostojki))
  107.             return true;
  108.         else
  109.         return false;
  110.         }
  111.     int getPopust(){return this -> popust;}
  112.    
  113. };
  114. class Picerija{
  115.    
  116.     char ime[15];
  117.     Pica *pici;
  118.     int brpici;
  119.     public:
  120.    
  121.     Picerija(const char *ime = " "){
  122.     strcpy(this -> ime, ime);
  123.     this -> brpici = 0;
  124.     this -> pici = new Pica[0];
  125.     }
  126.  
  127.     Picerija(const Picerija &p){
  128.     strcpy(this -> ime, ime);
  129.     this -> brpici = p.brpici;
  130.     this -> pici = new Pica[p.brpici];
  131.         for(int i = 0; i < p.brpici; i++){
  132.         this -> pici[i] = p.pici[i];}
  133.     }    
  134.     Picerija &operator=(const Picerija &p){
  135.         if(this != &p){
  136.             strcpy(this -> ime, ime);
  137.             this -> brpici = p.brpici;
  138.             this -> pici = new Pica[p.brpici];
  139.             for(int i = 0; i < p.brpici; i++){
  140.             this -> pici[i] = p.pici[i];}
  141.         } return *this;
  142.         }
  143.     void setIme(char *ime){strcpy(this -> ime, ime);}
  144.     const char* getIme(){return this -> ime;}
  145.    
  146.     void dodadi (Pica p)
  147.     {
  148.                
  149.         if (p.getPopust() > 0 && p.getPopust() <= 100)    
  150.         {
  151.                 Pica *tmp = new Pica[brpici + 1];
  152.                 for (int i = 0; i < brpici; i++)
  153.                 {
  154.                 tmp[i] = pici[i];
  155.                 }
  156.            
  157.             if (!brpici)
  158.             {
  159.                 tmp[brpici++] = p;
  160.                 delete [] pici;
  161.                 pici = tmp;
  162.             }
  163.            
  164.             else
  165.                 if(tmp[brpici - 1].istiSe(p) != true)
  166.             {
  167.                
  168.                 tmp[brpici++] = p;
  169.                 delete [] pici;
  170.                 pici = tmp;
  171.             }
  172.        
  173.         }
  174.  
  175.     }
  176.    
  177.     void piciNaPromocija(){
  178.         for(int i = 0; i < brpici; i++){
  179.         pici[i].pecati();
  180.         }
  181.     }
  182. };
  183.  
  184. int main () {
  185.  
  186.     int n;
  187.     char ime[15];
  188.     cin >> ime;
  189.     cin >> n;
  190.  
  191.     Picerija p1(ime);
  192.     for(int i = 0; i < n; i++){
  193.         char imp[100];
  194.         cin.get();
  195.         cin.getline(imp,100);
  196.         int cena;
  197.         cin >> cena;
  198.         char sostojki[100];
  199.         cin.get();
  200.         cin.getline(sostojki,100);
  201.         int popust;
  202.         cin >> popust;
  203.         Pica p(imp,cena,sostojki,popust);
  204.         p1.dodadi(p);
  205.        
  206.     }
  207.  
  208.     Picerija p2 = p1;
  209.     cin >> ime;
  210.     p2.setIme(ime);
  211.     char imp[100];
  212.     cin.get();
  213.     cin.getline(imp,100);
  214.     int cena;
  215.     cin >> cena;
  216.     char sostojki[100];
  217.     cin.get();
  218.     cin.getline(sostojki,100);
  219.     int popust;
  220.     cin >> popust;
  221.     Pica p(imp,cena,sostojki,popust);
  222.     p2.dodadi(p);
  223.    
  224.  
  225.     cout<<p1.getIme()<<endl;
  226.     cout<<"Pici na promocija:"<<endl;
  227.     p1.piciNaPromocija();
  228.        
  229.    
  230.    
  231.     cout<<p2.getIme()<<endl;
  232.     cout<<"Pici na promocija:"<<endl;
  233.     p2.piciNaPromocija();
  234.         return 0;
  235. }
Add Comment
Please, Sign In to add comment