Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- enum Tip{LINUX,UNIX,WINDOWS};
- class OperativenSistem{
- private:
- char *ime;
- float verzija;
- enum Tip tip;
- float golemina;
- public:
- friend class Repozitorium;
- //default constr
- OperativenSistem(){ime=new char[0];}//golemina=0;?????
- //constr so argumenti
- OperativenSistem(char *name,float ver,enum Tip t,float gol){
- ime=new char [strlen(name)+1];
- strcpy(ime,name);
- verzija=ver;
- tip=t;
- golemina=gol;
- }
- //copy constr
- OperativenSistem(const OperativenSistem &o){
- ime=new char [strlen(o.ime)+1];
- strcpy(ime,o.ime);
- verzija=o.verzija;
- tip=o.tip;
- golemina=o.golemina;
- }
- //preoptovaren =
- OperativenSistem & operator=(const OperativenSistem &o){
- if(this!=&o){
- delete [] ime;
- ime=new char [strlen(o.ime)+1];
- strcpy(ime,o.ime);
- verzija=o.verzija;
- tip=o.tip;
- golemina=o.golemina;
- }
- return *this;
- }
- // destructor
- ~OperativenSistem(){delete [] ime;}
- //metod za pecatenje
- void pecati(){
- cout<<"Ime: "<<ime<<" Verzija: "<<verzija<<" Tip: "<<tip<<" Golemina:"<<golemina<<"GB"<<endl;
- }
- // metod za proverka na ednakvost
- bool ednakviSe(const OperativenSistem &os) const{
- if (strcmp(ime,os.ime)==0&&verzija==os.verzija && tip==os.tip && golemina==os.golemina)
- return true;
- else return false;
- }
- // metod za sporedba na verzija
- int sporediVerzija(const OperativenSistem &os){
- if(verzija==os.verzija) return 0;
- else if(verzija<os.verzija) return -1;
- else return 1;
- }
- // metod za proverka dali se od ista familija
- bool istaFamilija(const OperativenSistem &sporedba)const{
- if(strcmp(ime,sporedba.ime)==0 && tip==sporedba.tip) return true;
- else return false;
- }
- };
- class Repozitorium{
- private:
- char ime[20];
- OperativenSistem *niza;
- int broj;
- public:
- // constr
- Repozitorium(const char *ime){
- strcpy(this->ime,ime);
- niza=new OperativenSistem [0];
- broj=0;
- }
- // destr
- Repozitorium(){delete [] niza;}
- // metod za pecatenje na repozitoriumite
- void pecatiOperativniSistemi(){
- cout<<"Repozitorium: "<<ime<<endl;
- for(int i=0;i<broj;i++)
- niza[i].pecati();
- }
- // metod za dodavanje operativen sistem
- void dodadi(const OperativenSistem &nov){
- bool flag=true;
- for(int i=0;i<broj;i++){
- if(nov.istaFamilija(niza[i]) && niza[i].verzija<nov.verzija){
- niza[i]=nov;
- flag=false;
- }
- }
- if(flag){
- OperativenSistem *temp=new OperativenSistem [broj+1];
- for(int i=0;i<broj;i++){
- temp[i]=niza[i];
- }
- temp[broj]=nov;
- delete [] niza;
- niza=temp;
- broj++;
- }
- }
- // metod za brishenje OS
- void izbrishi(const OperativenSistem &operativenSistem){
- int indeks=-35;
- bool flag=true;
- for(int i=0;i<broj;i++){
- if(operativenSistem.ednakviSe(niza[i])){
- indeks=i;
- flag=false;
- break;
- }
- }
- if(!flag){
- OperativenSistem *temp=new OperativenSistem[broj-1];
- for(int i=0;i<indeks;i++){
- temp[i]=niza[i];
- }
- for(int i=indeks+1;i<broj;i++){
- temp[i-1]=niza[i];
- }
- delete [] niza;
- temp=niza;
- broj--;
- }
- }
- };
- 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