Advertisement
LegoDrifter

ZA DEBAGIRANJE

Jun 23rd, 2020
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. enum vid{LINUX,UNIX,WINDOWS};
  7.  
  8. class OperativenSistem{
  9.  private:
  10.     char *ime;
  11.     float version;
  12.     vid tip;
  13.     float golemina;
  14.  public:
  15.     OperativenSistem(const char *ime="",float version=0.0,vid tip=(int)0,float golemina=0.0){
  16.         this->ime = new char [strlen(ime)+1];
  17.         strcpy(this->ime,ime);
  18.         this->version=version;
  19.         this->tip=tip;
  20.         this->golemina=golemina;
  21.     }
  22.     OperativenSistem(OperativenSistem &os)
  23.     {
  24.         this->ime = new char [strlen(os.ime)+1];
  25.         strcpy(this->ime,os.ime);
  26.         this->version=os.version;
  27.         this->tip=os.tip;
  28.         this->golemina=os.golemina;
  29.     }
  30.     OperativenSistem &operator=(OperativenSistem &os)
  31.     {
  32.         if(this!=&os)
  33.         {
  34.         delete [] ime;
  35.         this->ime = new char [strlen(os.ime)+1];
  36.         strcpy(this->ime,os.ime);
  37.         this->version=os.version;
  38.         this->tip=os.tip;
  39.         this->golemina=os.golemina;
  40.         }
  41.         return *this;
  42.     }
  43.     void pecati()
  44.     {
  45.         cout<<"Ime: "<<ime<<" Verzija: "<<version<<" Tip: "<<tip<<" Golemina:"<<golemina<<endl;
  46.     }
  47.     bool ednakviSe(const OperativenSistem &os)
  48.     {
  49.         if((strcmp(ime,os.ime)==0)&&(version==os.version)&&(tip==os.tip)&&(golemina==os.golemina))
  50.             return true;
  51.         else return false;
  52.     }
  53.     int sporediVerzija(const OperativenSistem &os)
  54.     {
  55.         if(version==os.version)
  56.             return 0;
  57.         if(version<os.version)
  58.             return -1;
  59.         else
  60.             return 1;
  61.     }
  62.     bool istaFamilija(const OperativenSistem &sporedba)
  63.     {
  64.         if((strcmp(ime,sporedba.ime)==0)&&(tip==sporedba.tip)) return true;
  65.         else return false;
  66.     }
  67.     ~OperativenSistem()
  68.     {
  69.         delete [] ime;
  70.     }
  71.  
  72. };
  73. class Repozitorium{
  74. private:
  75.     char ime[20];
  76.     OperativenSistem *niza;
  77.     int n;
  78. public:
  79.     Repozitorium()
  80.     {
  81.         this->niza = new OperativenSistem[0];
  82.         this->n = 0;
  83.         strcpy(this->ime,"");
  84.     }
  85.     Repozitorium(const char*ime)
  86.     {
  87.         strcpy(this->ime,ime);
  88.         this->niza = new OperativenSistem[0];
  89.         this->n=0;
  90.  
  91.     }
  92.     Repozitorium(Repozitorium &rt)
  93.     {
  94.         strcpy(this->ime,rt.ime);
  95.         this->niza = new OperativenSistem[rt.n];
  96.         this->n=rt.n;
  97.         for(int i=0;i<rt.n;i++)
  98.         {
  99.             this->niza[i]=niza[i];
  100.         }
  101.     }
  102.   void izbrishi(OperativenSistem &OperativenSistem)
  103.     {
  104.  
  105.         int brojac=0;
  106.         for(int i=0;i<n;i++)
  107.         {
  108.             if((!niza[i].ednakviSe(OperativenSistem)))
  109.             {
  110.                 brojac++;
  111.             }
  112.         }
  113.         OperativenSistem *tmp = new OperativenSistem[brojac];
  114.         brojac=0;
  115.         for(int i=0;i<n;i++)
  116.         {
  117.             if(!niza[i].ednakviSe(OperativenSistem))
  118.             {
  119.                 tmp[brojac++] = niza[i];
  120.             }
  121.         }
  122.         delete [] niza;
  123.         niza = tmp;
  124.         n = brojac;
  125.     }
  126.     void dodadi(const OperativenSistem &nov)
  127.     {
  128.         for(int i=0;i<n;i++)
  129.         {
  130.             if((niza[i].istaFamilija(nov)==true)&&(niza[i].sporediVerzija(nov)==-1))
  131.             {
  132.                 niza[i]=nov;
  133.                 return ;
  134.             }
  135.         }
  136.         OperativenSistem *tmp = new OperativenSistem[n+1];
  137.         for(int i=0;i<n;i++)
  138.  
  139.             tmp[i] = niza[i];
  140.             tmp[n++] = nov;
  141.             delete[] niza;
  142.             this->niza = new OperativenSistem[n];
  143.             for(int i=0;i<n;i++)
  144.                 this->niza[i]=tmp[i];
  145.  
  146.     }
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159. };
  160.  
  161.  
  162. int main(){
  163.  
  164.  
  165.     return 0;
  166.  
  167. }
  168.  
  169. int main() {
  170.     char repoName[20];
  171.     cin>>repoName;
  172.     Repozitorium repozitorium=Repozitorium(repoName);
  173.     int brojOperativniSistemi = 0;
  174.     cin>>brojOperativniSistemi;
  175.     char ime[20];
  176.     float verzija;
  177.     int tip;
  178.     float golemina;
  179.     for (int i = 0; i<brojOperativniSistemi; i++){
  180.         cin>>ime;
  181.         cin>>verzija;
  182.         cin>>tip;
  183.         cin>>golemina;
  184.         OperativenSistem os = OperativenSistem(ime, verzija, (Tip)tip, golemina);
  185.         repozitorium.dodadi(os);
  186.     }
  187.  
  188.     repozitorium.pecatiOperativniSistemi();
  189.      cin>>ime;
  190.     cin>>verzija;
  191.     cin>>tip;
  192.     cin>>golemina;
  193.     OperativenSistem os = OperativenSistem(ime, verzija, (Tip)tip, golemina);
  194.     cout<<"=====Brishenje na operativen sistem====="<<endl;
  195.     repozitorium.izbrishi(os);
  196.     repozitorium.pecatiOperativniSistemi();
  197.     return 0;
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement