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{
- char *ime="asd";
- float verzija=0.0,goleminaGB=0.0;
- Tip type;
- public:
- OperativenSistem(){}
- OperativenSistem(char *ime,float verzija,Tip type,float goleminaGB){
- this->verzija=verzija;
- this->type=type;
- this->goleminaGB=goleminaGB;
- this->ime= new char [strlen(ime)+1];
- strcpy(this->ime,ime);
- }
- OperativenSistem(const OperativenSistem &os){
- this->verzija=os.verzija;
- this->type=os.type;
- this->goleminaGB=os.goleminaGB;
- this->ime= new char [strlen(os.ime)+1];
- strcpy(this->ime,os.ime);
- }
- ~OperativenSistem(){
- delete [] ime;
- }
- OperativenSistem &operator= (const OperativenSistem &os){
- if(this!=&os){
- delete [] ime;
- this->verzija=os.verzija;
- this->type=os.type;
- this->goleminaGB=os.goleminaGB;
- this->ime= new char [strlen(os.ime)+1];
- strcpy(this->ime,os.ime);
- }
- return *this;
- }
- void pecati() {
- cout<<"Ime: "<<ime<<" Verzija: "<<verzija<<" Tip: "<<type<<" Golemina:"<<goleminaGB<<"GB"<<endl;
- }
- bool ednakviSe(const OperativenSistem &os){
- return strcmp(ime,os.ime)==0&&verzija==os.verzija&&type==os.type&&goleminaGB==os.goleminaGB;
- }
- int sporediVerzija(const OperativenSistem &os){
- if(verzija==os.verzija){
- return 0;
- }else if(os.verzija>verzija){
- return -1;
- }else{
- return 1;
- }
- }
- bool istaFamilija(const OperativenSistem &sporedba){
- return strcmp(ime,sporedba.ime)==0 && type==sporedba.type;
- }
- };
- class Repozitorium{
- char ime[20];
- OperativenSistem *os;
- int brOS;
- public:
- Repozitorium(char *ime=""){
- strcpy(this->ime,ime);
- os = new OperativenSistem [0];
- brOS = 0;
- }
- Repozitorium(const Repozitorium &r){
- strcpy(this->ime,r.ime);
- this->os = new OperativenSistem [brOS];
- this->brOS=r.brOS;
- for(int i=0;i<r.brOS;i++){
- this->os[i]=r.os[i];
- }
- }
- Repozitorium & operator=(const Repozitorium &r){
- if(this!=&r){
- delete [] os;
- strcpy(this->ime,r.ime);
- this->os = new OperativenSistem [brOS];
- this->brOS=r.brOS;
- for(int i=0;i<r.brOS;i++){
- this->os[i]=r.os[i];
- }
- }
- return *this;
- }
- ~Repozitorium(){
- delete [] os;
- }
- void pecatiOperativniSistemi() {
- cout<<"Repozitorium: "<<ime<<endl;
- for (int i=0;i<brOS;i++){
- os[i].pecati();
- }
- }
- void izbrishi(const OperativenSistem &operativenSistem){
- int indeks[100],j=0,counter=0;
- for(int i=0;i<brOS;i++){
- if(os[i].ednakviSe(operativenSistem)){
- indeks[i]=1;
- counter++;
- }else{
- indeks[i]=0;
- }
- }
- OperativenSistem *temp = new OperativenSistem [brOS-counter];
- for(int i=0;i<brOS;i++){
- if(indeks[i]!=1){
- temp[j]=os[i];
- j++;
- }
- }
- delete [] os;
- os=temp;
- }
- void dodadi(const OperativenSistem &nov){
- int flag=0;
- for(int i=0;i<brOS;i++){
- if(os[i].istaFamilija(nov)){
- if(os[i].sporediVerzija(nov)==-1){
- os[i]=nov;
- flag=1;
- break;
- }
- }
- }
- if(flag){
- os[brOS+1]=nov;
- }
- }
- };
- 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;
- }
Add Comment
Please, Sign In to add comment