Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- enum vid{LINUX,UNIX,WINDOWS};
- class OperativenSistem{
- private:
- char *ime;
- float version;
- vid tip;
- float golemina;
- public:
- OperativenSistem(const char *ime="",float version=0.0,vid tip=(int)0,float golemina=0.0){
- this->ime = new char [strlen(ime)+1];
- strcpy(this->ime,ime);
- this->version=version;
- this->tip=tip;
- this->golemina=golemina;
- }
- OperativenSistem(OperativenSistem &os)
- {
- this->ime = new char [strlen(os.ime)+1];
- strcpy(this->ime,os.ime);
- this->version=os.version;
- this->tip=os.tip;
- this->golemina=os.golemina;
- }
- OperativenSistem &operator=(OperativenSistem &os)
- {
- if(this!=&os)
- {
- delete [] ime;
- this->ime = new char [strlen(os.ime)+1];
- strcpy(this->ime,os.ime);
- this->version=os.version;
- this->tip=os.tip;
- this->golemina=os.golemina;
- }
- return *this;
- }
- void pecati()
- {
- cout<<"Ime: "<<ime<<" Verzija: "<<version<<" Tip: "<<tip<<" Golemina:"<<golemina<<endl;
- }
- bool ednakviSe(const OperativenSistem &os)
- {
- if((strcmp(ime,os.ime)==0)&&(version==os.version)&&(tip==os.tip)&&(golemina==os.golemina))
- return true;
- else return false;
- }
- int sporediVerzija(const OperativenSistem &os)
- {
- if(version==os.version)
- return 0;
- if(version<os.version)
- return -1;
- else
- return 1;
- }
- bool istaFamilija(const OperativenSistem &sporedba)
- {
- if((strcmp(ime,sporedba.ime)==0)&&(tip==sporedba.tip)) return true;
- else return false;
- }
- ~OperativenSistem()
- {
- delete [] ime;
- }
- };
- class Repozitorium{
- private:
- char ime[20];
- OperativenSistem *niza;
- int n;
- public:
- Repozitorium()
- {
- this->niza = new OperativenSistem[0];
- this->n = 0;
- strcpy(this->ime,"");
- }
- Repozitorium(const char*ime)
- {
- strcpy(this->ime,ime);
- this->niza = new OperativenSistem[0];
- this->n=0;
- }
- Repozitorium(Repozitorium &rt)
- {
- strcpy(this->ime,rt.ime);
- this->niza = new OperativenSistem[rt.n];
- this->n=rt.n;
- for(int i=0;i<rt.n;i++)
- {
- this->niza[i]=niza[i];
- }
- }
- void izbrishi(OperativenSistem &OperativenSistem)
- {
- int brojac=0;
- for(int i=0;i<n;i++)
- {
- if((!niza[i].ednakviSe(OperativenSistem)))
- {
- brojac++;
- }
- }
- OperativenSistem *tmp = new OperativenSistem[brojac];
- brojac=0;
- for(int i=0;i<n;i++)
- {
- if(!niza[i].ednakviSe(OperativenSistem))
- {
- tmp[brojac++] = niza[i];
- }
- }
- delete [] niza;
- niza = tmp;
- n = brojac;
- }
- void dodadi(const OperativenSistem &nov)
- {
- for(int i=0;i<n;i++)
- {
- if((niza[i].istaFamilija(nov)==true)&&(niza[i].sporediVerzija(nov)==-1))
- {
- niza[i]=nov;
- return ;
- }
- }
- OperativenSistem *tmp = new OperativenSistem[n+1];
- for(int i=0;i<n;i++)
- tmp[i] = niza[i];
- tmp[n++] = nov;
- delete[] niza;
- this->niza = new OperativenSistem[n];
- for(int i=0;i<n;i++)
- this->niza[i]=tmp[i];
- }
- };
- int main(){
- return 0;
- }
- int main() {
- char repoName[20];
- cin>>repoName;
- Repozitorium repozitorium=Repozitorium(repoName);
- int brojOperativniSistemi = 0;
- cin>>brojOperativniSistemi;
- char ime[20];
- float verzija;
- int tip;
- float golemina;
- for (int i = 0; i<brojOperativniSistemi; i++){
- cin>>ime;
- cin>>verzija;
- cin>>tip;
- cin>>golemina;
- OperativenSistem os = OperativenSistem(ime, verzija, (Tip)tip, golemina);
- repozitorium.dodadi(os);
- }
- repozitorium.pecatiOperativniSistemi();
- cin>>ime;
- cin>>verzija;
- cin>>tip;
- cin>>golemina;
- OperativenSistem os = OperativenSistem(ime, verzija, (Tip)tip, golemina);
- cout<<"=====Brishenje na operativen sistem====="<<endl;
- repozitorium.izbrishi(os);
- repozitorium.pecatiOperativniSistemi();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement