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;
- Tip tip;
- float golemina;
- public:
- OperativenSistem() {}; //default construct
- OperativenSistem(char* ime, float verzija,Tip tip,float golemina ) { //constuct
- this->ime = new char[strlen(ime)+1];
- strcpy(this->ime,ime);
- this->verzija=verzija;
- this->tip=tip;
- this->golemina=golemina;
- };
- ~OperativenSistem() { //destruct
- delete []ime;
- }
- OperativenSistem(const OperativenSistem &os) {
- strcpy(this->ime,os.ime);
- this->verzija=os.verzija;
- this->tip=os.tip;
- this->golemina=os.golemina;
- };
- OperativenSistem& operator=(const OperativenSistem &os) { //preopt operator =
- if (this!=&os) {
- delete []ime;
- ime = new char[strlen(os.ime)+1];
- strcpy(ime,os.ime);
- tip=os.tip;
- golemina=os.golemina;
- verzija=os.verzija;
- }
- return *this;
- }
- bool ednakviSe(const OperativenSistem &os) {
- if((this->golemina == os.golemina)&& (verzija==os.verzija)&&(tip==os.tip)&& !(strcmp(ime,os.ime)))
- return true;
- else return false;
- }
- int sporediVerzija(const OperativenSistem &os) {
- if(verzija==os.verzija) {
- return 0;
- } else if(verzija<os.verzija) return -1;
- else return 1;
- }
- bool istaFamilija(const OperativenSistem &sporedba) {
- if(!(strcmp(ime,sporedba.ime))&&(tip==sporedba.tip))
- return true;
- else return false;
- }
- void pecati() {
- cout<<"Ime: "<<ime<<"Verzija: "<<verzija<<"Tip: "<<tip<<"Golemina"<<golemina<<"GB"<<endl;
- } //////////////////////////////////// I NAPRAVI COPY KONSTRUKTOR
- };
- class Repozitorium {
- private:
- char ime[20];
- OperativenSistem* OS;
- int brojOS;
- public:
- Repozitorium(const char *ime) {
- strcpy(this->ime,ime);
- };
- ~Repozitorium() {
- delete []OS;
- };
- Repozitorium(const Repozitorium &rep) {
- strcpy(this->ime,rep.ime);
- }
- void pecatiOperativniSistemi() {
- cout<<"Repozitorium: "<<ime<<endl;
- for(int i=0; i<brojOS; i++) {
- OS[i].pecati();
- }
- };
- void izbrishi(const OperativenSistem &osistem) {
- int flag = 0;
- int lokacija = -1;
- for (int i = 0; i<brojOS; i++){
- if (istiSe){
- flag = 1;
- lokator = i;
- }
- }
- if (flag){
- OperativenSistem* tmp = new OperativenSistem[brojOS-1];
- for (int i = 0; i<brojOS-1; i++){
- if (i < lokator)
- tmp[i] = OS[i];
- else
- tmp[i] = OS[i+1];
- }
- delete[] OS;
- OS = tmp;
- brojOS--;
- }
- }
- void dodadi(const OperativenSistem &nov) {
- int flag = 1;
- for (int i=0; i<brojOS; i++) {
- if(OS[i].istaFamilija(nov)) { // treba da zameni so ponov od ista familija
- OS[i]=nov;
- flag = 0;
- }
- }
- if (flag == 1){ //ako go nema toj OS dodadi go posleden
- OperativenSistem* temp = new OperativenSistem[brojOS+1];
- for(int j=0; j<brojOS; j++) {
- temp[i]=OS[i];
- }
- delete [] OS;
- OperativenSistem* OS= new OperativenSistem[brojOS+1];
- OS[brojOS]=nov;
- for(int j=0; j<brojOS; j++) {
- OS[j]=temp[j];
- }
- }
- }
- };
- 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);
- }
- cin>>ime;
- cin>>verzija;
- cin>>tip;
- cin>>golemina;
- OperativenSistem brisi = OperativenSistem(ime, verzija, tip, golemina);
- repozitorium.pecatiOperativniSistemi();
- cout<<"====== BRISENJE ========="<<endl;
- repozitorium.izbrishi(brisi);
- repozitorium.pecatiOperativniSistemi()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement