Advertisement
masterm1nd99

Untitled

Apr 4th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.58 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. enum Tip tip;
  13. float golemina;
  14. public:
  15. friend class Repozitorium;
  16. //default constr
  17. OperativenSistem(){ime=new char[0];}//golemina=0;?????
  18. //constr so argumenti
  19. OperativenSistem(char *name,float ver,enum Tip t,float gol){
  20. ime=new char [strlen(name)+1];
  21. strcpy(ime,name);
  22. verzija=ver;
  23. tip=t;
  24. golemina=gol;
  25. }
  26. //copy constr
  27. OperativenSistem(const OperativenSistem &o){
  28. ime=new char [strlen(o.ime)+1];
  29. strcpy(ime,o.ime);
  30. verzija=o.verzija;
  31. tip=o.tip;
  32. golemina=o.golemina;
  33. }
  34. //preoptovaren =
  35. OperativenSistem & operator=(const OperativenSistem &o){
  36. if(this!=&o){
  37. delete [] ime;
  38. ime=new char [strlen(o.ime)+1];
  39. strcpy(ime,o.ime);
  40. verzija=o.verzija;
  41. tip=o.tip;
  42. golemina=o.golemina;
  43. }
  44. return *this;
  45. }
  46. // destructor
  47. ~OperativenSistem(){delete [] ime;}
  48. //metod za pecatenje
  49. void pecati(){
  50. cout<<"Ime: "<<ime<<" Verzija: "<<verzija<<" Tip: "<<tip<<" Golemina:"<<golemina<<"GB"<<endl;
  51. }
  52. // metod za proverka na ednakvost
  53. bool ednakviSe(const OperativenSistem &os) const{
  54. if (strcmp(ime,os.ime)==0&&verzija==os.verzija && tip==os.tip && golemina==os.golemina)
  55. return true;
  56. else return false;
  57. }
  58. // metod za sporedba na verzija
  59. int sporediVerzija(const OperativenSistem &os){
  60. if(verzija==os.verzija) return 0;
  61. else if(verzija<os.verzija) return -1;
  62. else return 1;
  63. }
  64. // metod za proverka dali se od ista familija
  65. bool istaFamilija(const OperativenSistem &sporedba)const{
  66. if(strcmp(ime,sporedba.ime)==0 && tip==sporedba.tip) return true;
  67. else return false;
  68. }
  69. };
  70.  
  71. class Repozitorium{
  72. private:
  73. char ime[20];
  74. OperativenSistem *niza;
  75. int broj;
  76. public:
  77. // constr
  78. Repozitorium(const char *ime){
  79. strcpy(this->ime,ime);
  80. niza=new OperativenSistem [0];
  81. broj=0;
  82. }
  83. // destr
  84. Repozitorium(){delete [] niza;}
  85. // metod za pecatenje na repozitoriumite
  86. void pecatiOperativniSistemi(){
  87. cout<<"Repozitorium: "<<ime<<endl;
  88. for(int i=0;i<broj;i++)
  89. niza[i].pecati();
  90. }
  91. // metod za dodavanje operativen sistem
  92. void dodadi(const OperativenSistem &nov){
  93. bool flag=true;
  94. for(int i=0;i<broj;i++){
  95. if(nov.istaFamilija(niza[i]) && niza[i].verzija<nov.verzija){
  96. niza[i]=nov;
  97. flag=false;
  98. }
  99. }
  100. if(flag){
  101. OperativenSistem *temp=new OperativenSistem [broj+1];
  102. for(int i=0;i<broj;i++){
  103. temp[i]=niza[i];
  104. }
  105. temp[broj]=nov;
  106. delete [] niza;
  107. niza=temp;
  108. broj++;
  109. }
  110. }
  111. // metod za brishenje OS
  112. void izbrishi(const OperativenSistem &operativenSistem){
  113. int indeks=-35;
  114. bool flag=true;
  115. for(int i=0;i<broj;i++){
  116. if(operativenSistem.ednakviSe(niza[i])){
  117. indeks=i;
  118. flag=false;
  119. break;
  120. }
  121. }
  122. if(!flag){
  123. OperativenSistem *temp=new OperativenSistem[broj-1];
  124. for(int i=0;i<indeks;i++){
  125. temp[i]=niza[i];
  126. }
  127. for(int i=indeks+1;i<broj;i++){
  128. temp[i-1]=niza[i];
  129. }
  130. delete [] niza;
  131. temp=niza;
  132. broj--;
  133. }
  134.  
  135. }
  136. };
  137.  
  138. int main() {
  139. char repoName[20];
  140. cin>>repoName;
  141. Repozitorium repozitorium=Repozitorium(repoName);
  142. int brojOperativniSistemi = 0;
  143. cin>>brojOperativniSistemi;
  144. char ime[20];
  145. float verzija;
  146. int tip;
  147. float golemina;
  148. for (int i = 0; i<brojOperativniSistemi; i++){
  149. cin>>ime;
  150. cin>>verzija;
  151. cin>>tip;
  152. cin>>golemina;
  153. OperativenSistem os = OperativenSistem(ime, verzija, (Tip)tip, golemina);
  154. repozitorium.dodadi(os);
  155. }
  156.  
  157. repozitorium.pecatiOperativniSistemi();
  158. cin>>ime;
  159. cin>>verzija;
  160. cin>>tip;
  161. cin>>golemina;
  162. OperativenSistem os = OperativenSistem(ime, verzija, (Tip)tip, golemina);
  163. cout<<"=====Brishenje na operativen sistem====="<<endl;
  164. repozitorium.izbrishi(os);
  165. repozitorium.pecatiOperativniSistemi();
  166. return 0;
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement