leo99fi

Вежби за прв колоквиум - Гитари

Apr 11th, 2019
725
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. class Gitara {
  7. private:
  8.     char seriski[25];
  9.     double cena;
  10.     int godina;
  11.     char tip[40];
  12.  
  13.     void _copy(const Gitara &g) {
  14.         strcpy(this->seriski, g.seriski);
  15.         //strncpy(this->seriski, g.seriski, 24);
  16.         //this->seriski[24] = '\0';
  17.         this->cena = g.cena;
  18.         this->godina = g.godina;
  19.         strcpy(this->tip, g.tip);
  20.     }
  21. public:
  22.     Gitara (const char *tip = "", const char *seriski = "", const int godina = 0, double cena = 0) { //constructor so argumenti
  23.         strcpy(this->tip, tip);
  24.         strcpy(this->seriski, seriski);
  25.         this->cena = cena;
  26.         this->godina = godina;
  27.     }
  28.  
  29.     Gitara (const Gitara &g) { //copy constructor
  30.         _copy(g);
  31.     }
  32.  
  33.     Gitara& operator= (const Gitara &g) { //operator =
  34.         if (this != &g) {
  35.             _copy(g);
  36.         }
  37.         return *this;
  38.     }
  39.  
  40.     ~Gitara () {}
  41.  
  42.     bool daliIsti (const Gitara &g) {
  43.         if ((strcmp(this->seriski, g.seriski)) == 0) {
  44.             return true;
  45.         }
  46.         return false;
  47.     }
  48.  
  49.     void pecati() {
  50.         cout << this->seriski << " " << this->tip << " " << this->cena << endl;
  51.     }
  52.     char *getTip () {
  53.         return tip;
  54.     }
  55.     char *getSeriski () {
  56.         return seriski;
  57.     }
  58.     int getGodina () {
  59.         return godina;
  60.     }
  61.     float getNabavna () {
  62.         return cena;
  63.     }
  64. };
  65.  
  66. class Magacin {
  67. private:
  68.     char ime[30];
  69.     char lokacija[60];
  70.     Gitara *gitari;
  71.     int br_objekti;
  72.     int godina;
  73.  
  74.     void _copy (const Magacin &m) {
  75.         //strncpy(this->ime, m.ime, 29);
  76.         //this->ime[29] = '\0';
  77.         strcpy(this->ime, m.ime);
  78.         strcpy(this->lokacija, m.lokacija);
  79.         this->br_objekti = m.br_objekti;
  80.         this->godina = m.godina;
  81.         this->gitari = new Gitara[m.br_objekti];
  82.         for (int i = 0; i < this->br_objekti; ++i) {
  83.             this->gitari[i] = m.gitari[i];
  84.         }
  85.     }
  86. public:
  87.     Magacin (const char *ime = "", const char *lokacija = "", const int godina = 0) { //constructor so argumenti
  88.         strcpy(this->ime, ime);
  89.         strcpy(this->lokacija, lokacija);
  90.         this->godina = godina;
  91.         gitari = NULL;
  92.         br_objekti = 0;
  93.     }
  94.    
  95.     Magacin (const Magacin &m) { //copy constructor
  96.         _copy(m);
  97.     }
  98.  
  99.     Magacin& operator= (const Magacin &m) { //operator =
  100.         if (this != &m) {
  101.             delete [] this->gitari;
  102.             _copy(m);
  103.         }
  104.         return *this;
  105.     }
  106.  
  107.     ~Magacin () {
  108.         delete [] this->gitari;
  109.     }
  110.  
  111.     double vrednost () {
  112.         double zbir_vrednost = 0;
  113.         for (int i = 0; i < this->br_objekti; ++i) {
  114.             zbir_vrednost += gitari[i].getNabavna();
  115.         }
  116.         return zbir_vrednost;
  117.     }
  118.  
  119.     void dodadi (Gitara &g) {
  120.         Gitara *tmp = new Gitara[br_objekti+1];
  121.         for (int i = 0; i < this->br_objekti; ++i) {
  122.             tmp[i] = gitari[i];
  123.         }
  124.         tmp[br_objekti++] = g;
  125.         delete [] this->gitari;
  126.         this->gitari = tmp;
  127.     }
  128.  
  129.     void prodadi (Gitara &g) {
  130.         int newBr = 0;
  131.         for (int i = 0; i < this->br_objekti; ++i) {
  132.             if (gitari[i].daliIsti(g) == false) {
  133.                 newBr++;
  134.             }
  135.         }
  136.         Gitara * tmp = new Gitara[newBr];
  137.         int j = 0;
  138.         for (int i=0; i < this->br_objekti; ++i) {
  139.             if (gitari[i].daliIsti(g) == false) {
  140.                 tmp[j] = gitari[i];
  141.                 j++;
  142.             }
  143.         }
  144.         delete [] this->gitari;
  145.         this->gitari = tmp;
  146.         this->br_objekti = newBr;
  147.     }
  148.     void pecati(bool daliNovi) {
  149.         cout << ime << " " << lokacija << endl;
  150.         for (int i = 0; i < this->br_objekti; i++) {
  151.             if (daliNovi == true && gitari[i].getGodina() > godina) {
  152.                 gitari[i].pecati();
  153.             } else if (daliNovi == false) {
  154.                 gitari[i].pecati();
  155.             }
  156.         }
  157.     }
  158. };
  159.  
  160. int main() {
  161.     // se testira zadacata modularno
  162.     int testCase;
  163.     cin >> testCase;
  164.  
  165.     int n, godina;
  166.     float cena;
  167.     char seriski[50],tip[50];
  168.  
  169.     if(testCase == 1) {
  170.         cout << "===== Testiranje na klasata Gitara ======" << endl;
  171.         cin>>tip;
  172.         cin>>seriski;
  173.         cin >> godina;
  174.         cin >> cena;
  175.         Gitara g(tip,seriski, godina,cena);
  176.         cout<<g.getTip()<<endl;
  177.         cout<<g.getSeriski()<<endl;
  178.         cout<<g.getGodina()<<endl;
  179.         cout<<g.getNabavna()<<endl;
  180.     } else if(testCase == 2) {
  181.         cout << "===== Testiranje na klasata Magacin so metodot print() ======" << endl;
  182.         Magacin kb("Magacin1","Lokacija1");
  183.         kb.pecati(false);
  184.     } else if(testCase == 3) {
  185.         cout << "===== Testiranje na klasata Magacin so metodot dodadi() ======" << endl;
  186.         Magacin kb("Magacin1","Lokacija1",2005);
  187.         cin>>n;
  188.         for (int i=0; i<n; i++) {
  189.             cin>>tip;
  190.             cin>>seriski;
  191.             cin >> godina;
  192.             cin >> cena;
  193.             Gitara g(tip,seriski, godina,cena);
  194.             cout<<"gitara dodadi"<<endl;
  195.             kb.dodadi(g);
  196.         }
  197.         kb.pecati(true);
  198.     }
  199.  
  200.     else if(testCase == 4) {
  201.         cout << "===== Testiranje na klasata Magacin so metodot prodadi() ======" << endl;
  202.         Magacin kb("Magacin1","Lokacija1",2012);
  203.         cin>>n;
  204.         Gitara brisi;
  205.         for (int i=0; i<n; i++) {
  206.             cin>>tip;
  207.             cin>>seriski;
  208.             cin >> godina;
  209.             cin >> cena;
  210.  
  211.             Gitara g(tip,seriski, godina,cena);
  212.             if(i==2)
  213.                 brisi=g;
  214.             cout<<"gitara dodadi"<<endl;
  215.             kb.dodadi(g);
  216.         }
  217.         kb.pecati(false);
  218.         kb.prodadi(brisi);
  219.         kb.pecati(false);
  220.     } else if(testCase == 5) {
  221.         cout << "===== Testiranje na klasata Magacin so metodot prodadi() i pecati(true) ======" << endl;
  222.         Magacin kb("Magacin1","Lokacija1",2011);
  223.         cin>>n;
  224.         Gitara brisi;
  225.         for (int i=0; i<n; i++) {
  226.             cin>>tip;
  227.             cin>>seriski;
  228.             cin >> godina;
  229.             cin >> cena;
  230.  
  231.             Gitara g(tip,seriski, godina,cena);
  232.             if(i==2)
  233.                 brisi=g;
  234.             cout<<"gitara dodadi"<<endl;
  235.             kb.dodadi(g);
  236.         }
  237.         kb.pecati(true);
  238.         kb.prodadi(brisi);
  239.         cout<<"Po brisenje:"<<endl;
  240.         Magacin kb3;
  241.         kb3=kb;
  242.         kb3.pecati(true);
  243.     } else if(testCase ==6) {
  244.         cout << "===== Testiranje na klasata Magacin so metodot vrednost()======" << endl;
  245.         Magacin kb("Magacin1","Lokacija1",2011);
  246.         cin>>n;
  247.         Gitara brisi;
  248.         for (int i=0; i<n; i++) {
  249.             cin>>tip;
  250.             cin>>seriski;
  251.             cin >> godina;
  252.             cin >> cena;
  253.  
  254.             Gitara g(tip,seriski, godina,cena);
  255.             if(i==2)
  256.                 brisi=g;
  257.             kb.dodadi(g);
  258.         }
  259.         cout<<kb.vrednost()<<endl;
  260.         kb.prodadi(brisi);
  261.         cout<<"Po brisenje:"<<endl;
  262.         cout<<kb.vrednost();
  263.         Magacin kb3;
  264.         kb3=kb;
  265.     }
  266.     return 0;
  267. }
Advertisement
Add Comment
Please, Sign In to add comment