Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.60 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3.  
  4. using namespace std;
  5.  
  6. enum Tip {LINUX, UNIX, WINDOWS};
  7.  
  8. class OperativenSistem {
  9. private:
  10.     char* ime;
  11.     float verzija;
  12.     Tip tip;
  13.     float golemina;
  14. public:
  15.     OperativenSistem() {}; //default construct
  16.     OperativenSistem(char* ime, float verzija,Tip tip,float golemina ) { //constuct
  17.         this->ime = new char[strlen(ime)+1];
  18.         strcpy(this->ime,ime);
  19.         this->verzija=verzija;
  20.         this->tip=tip;
  21.         this->golemina=golemina;
  22.     };
  23.     ~OperativenSistem() { //destruct
  24.         delete []ime;
  25.     }
  26.     OperativenSistem(const OperativenSistem &os) {
  27.         strcpy(this->ime,os.ime);
  28.         this->verzija=os.verzija;
  29.         this->tip=os.tip;
  30.         this->golemina=os.golemina;
  31.     };
  32.  
  33.  
  34.     OperativenSistem& operator=(const OperativenSistem &os) { //preopt operator =
  35.         if (this!=&os) {
  36.             delete []ime;
  37.             ime = new char[strlen(os.ime)+1];
  38.             strcpy(ime,os.ime);
  39.             tip=os.tip;
  40.             golemina=os.golemina;
  41.             verzija=os.verzija;
  42.         }
  43.         return *this;
  44.     }
  45.  
  46.     bool ednakviSe(const OperativenSistem &os) {
  47.         if((this->golemina == os.golemina)&& (verzija==os.verzija)&&(tip==os.tip)&& !(strcmp(ime,os.ime)))
  48.             return true;
  49.         else return false;
  50.     }
  51.  
  52.     int sporediVerzija(const OperativenSistem &os) {
  53.         if(verzija==os.verzija) {
  54.             return 0;
  55.         } else if(verzija<os.verzija) return -1;
  56.         else return 1;
  57.     }
  58.  
  59.     bool istaFamilija(const OperativenSistem &sporedba) {
  60.         if(!(strcmp(ime,sporedba.ime))&&(tip==sporedba.tip))
  61.             return true;
  62.         else  return false;
  63.     }
  64.  
  65.     void pecati() {
  66.         cout<<"Ime: "<<ime<<"Verzija: "<<verzija<<"Tip: "<<tip<<"Golemina"<<golemina<<"GB"<<endl;
  67.     } ////////////////////////////////////  I NAPRAVI COPY KONSTRUKTOR
  68. };
  69.  
  70. class Repozitorium {
  71. private:
  72.     char ime[20];
  73.     OperativenSistem* OS;
  74.     int brojOS;
  75. public:
  76.     Repozitorium(const char *ime) {
  77.         strcpy(this->ime,ime);
  78.     };
  79.     ~Repozitorium() {
  80.         delete []OS;
  81.     };
  82.     Repozitorium(const Repozitorium &rep) {
  83.         strcpy(this->ime,rep.ime);
  84.     }
  85.  
  86.     void pecatiOperativniSistemi() {
  87.         cout<<"Repozitorium: "<<ime<<endl;
  88.         for(int i=0; i<brojOS; i++) {
  89.             OS[i].pecati();
  90.         }
  91.     };
  92.  
  93.     void izbrishi(const OperativenSistem &osistem) {
  94.         int flag = 0;
  95.         int lokacija = -1;
  96.         for (int i = 0; i<brojOS; i++){
  97.             if (istiSe){
  98.                 flag = 1;
  99.                 lokator = i;
  100.             }
  101.         }
  102.  
  103.         if (flag){
  104.             OperativenSistem* tmp = new OperativenSistem[brojOS-1];
  105.             for (int i = 0; i<brojOS-1; i++){
  106.                 if (i < lokator)
  107.                     tmp[i] = OS[i];
  108.                 else
  109.                     tmp[i] = OS[i+1];
  110.  
  111.             }
  112.             delete[] OS;
  113.             OS = tmp;
  114.             brojOS--;
  115.  
  116.         }
  117.  
  118.     }
  119.  
  120.     void dodadi(const OperativenSistem &nov) {
  121.         int flag = 1;
  122.         for (int i=0; i<brojOS; i++) {
  123.             if(OS[i].istaFamilija(nov)) { // treba da zameni so ponov od ista familija
  124.                 OS[i]=nov;
  125.                 flag = 0;
  126.             }
  127.             }
  128.  
  129.         if (flag == 1){    //ako go nema toj OS dodadi go posleden
  130.         OperativenSistem* temp = new OperativenSistem[brojOS+1];
  131.                 for(int j=0; j<brojOS; j++) {
  132.                     temp[i]=OS[i];
  133.                 }
  134.                 delete [] OS;
  135.                 OperativenSistem* OS= new OperativenSistem[brojOS+1];
  136.                 OS[brojOS]=nov;
  137.                 for(int j=0; j<brojOS; j++) {
  138.                     OS[j]=temp[j];
  139.                 }
  140.             }
  141.  
  142.     }
  143. };
  144.  
  145.  
  146. int main() {
  147.     char repoName[20];
  148.     cin>>repoName;
  149.     Repozitorium repozitorium=Repozitorium(repoName);
  150.     int brojOperativniSistemi = 0;
  151.     cin>>brojOperativniSistemi;
  152.     char ime[20];
  153.     float verzija;
  154.     int tip;
  155.     float golemina;
  156.     for (int i = 0; i<brojOperativniSistemi; i++) {
  157.         cin>>ime;
  158.         cin>>verzija;
  159.         cin>>tip;
  160.         cin>>golemina;
  161.         OperativenSistem os = OperativenSistem(ime, verzija, (Tip)tip, golemina);
  162.         repozitorium.dodadi(os);
  163.     }
  164.  
  165.     cin>>ime;
  166.     cin>>verzija;
  167.     cin>>tip;
  168.     cin>>golemina;
  169.     OperativenSistem brisi = OperativenSistem(ime, verzija, tip, golemina);
  170.     repozitorium.pecatiOperativniSistemi();
  171.     cout<<"====== BRISENJE ========="<<endl;
  172.  
  173.     repozitorium.izbrishi(brisi);
  174.     repozitorium.pecatiOperativniSistemi()
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement