prometheus800

ООП: Гитари

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