BorjanCrvenkov

Репозиториум за оперативни системи code Ne raboti

Aug 14th, 2020 (edited)
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.62 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. enum Tip{
  7. LINUX, UNIX, WINDOWS
  8. };
  9.  
  10. class OperativenSistem{
  11. char *ime="asd";
  12. float verzija=0.0,goleminaGB=0.0;
  13. Tip type;
  14. public:
  15. OperativenSistem(){}
  16. OperativenSistem(char *ime,float verzija,Tip type,float goleminaGB){
  17. this->verzija=verzija;
  18. this->type=type;
  19. this->goleminaGB=goleminaGB;
  20. this->ime= new char [strlen(ime)+1];
  21. strcpy(this->ime,ime);
  22. }
  23. OperativenSistem(const OperativenSistem &os){
  24. this->verzija=os.verzija;
  25. this->type=os.type;
  26. this->goleminaGB=os.goleminaGB;
  27. this->ime= new char [strlen(os.ime)+1];
  28. strcpy(this->ime,os.ime);
  29. }
  30. ~OperativenSistem(){
  31. delete [] ime;
  32. }
  33. OperativenSistem &operator= (const OperativenSistem &os){
  34. if(this!=&os){
  35. delete [] ime;
  36. this->verzija=os.verzija;
  37. this->type=os.type;
  38. this->goleminaGB=os.goleminaGB;
  39. this->ime= new char [strlen(os.ime)+1];
  40. strcpy(this->ime,os.ime);
  41. }
  42. return *this;
  43. }
  44. void pecati() {
  45. cout<<"Ime: "<<ime<<" Verzija: "<<verzija<<" Tip: "<<type<<" Golemina:"<<goleminaGB<<"GB"<<endl;
  46. }
  47. bool ednakviSe(const OperativenSistem &os){
  48. return strcmp(ime,os.ime)==0&&verzija==os.verzija&&type==os.type&&goleminaGB==os.goleminaGB;
  49. }
  50. int sporediVerzija(const OperativenSistem &os){
  51. if(verzija==os.verzija){
  52. return 0;
  53. }else if(os.verzija>verzija){
  54. return -1;
  55. }else{
  56. return 1;
  57. }
  58. }
  59. bool istaFamilija(const OperativenSistem &sporedba){
  60. return strcmp(ime,sporedba.ime)==0 && type==sporedba.type;
  61. }
  62. };
  63.  
  64. class Repozitorium{
  65. char ime[20];
  66. OperativenSistem *os;
  67. int brOS;
  68. public:
  69. Repozitorium(char *ime=""){
  70. strcpy(this->ime,ime);
  71. os = new OperativenSistem [0];
  72. brOS = 0;
  73. }
  74. Repozitorium(const Repozitorium &r){
  75. strcpy(this->ime,r.ime);
  76. this->os = new OperativenSistem [brOS];
  77. this->brOS=r.brOS;
  78. for(int i=0;i<r.brOS;i++){
  79. this->os[i]=r.os[i];
  80. }
  81. }
  82. Repozitorium & operator=(const Repozitorium &r){
  83. if(this!=&r){
  84. delete [] os;
  85. strcpy(this->ime,r.ime);
  86. this->os = new OperativenSistem [brOS];
  87. this->brOS=r.brOS;
  88. for(int i=0;i<r.brOS;i++){
  89. this->os[i]=r.os[i];
  90. }
  91. }
  92. return *this;
  93. }
  94. ~Repozitorium(){
  95. delete [] os;
  96. }
  97. void pecatiOperativniSistemi() {
  98. cout<<"Repozitorium: "<<ime<<endl;
  99. for (int i=0;i<brOS;i++){
  100. os[i].pecati();
  101. }
  102. }
  103. void izbrishi(const OperativenSistem &operativenSistem){
  104. int indeks[100],j=0,counter=0;
  105. for(int i=0;i<brOS;i++){
  106. if(os[i].ednakviSe(operativenSistem)){
  107. indeks[i]=1;
  108. counter++;
  109. }else{
  110. indeks[i]=0;
  111. }
  112. }
  113. OperativenSistem *temp = new OperativenSistem [brOS-counter];
  114. for(int i=0;i<brOS;i++){
  115. if(indeks[i]!=1){
  116. temp[j]=os[i];
  117. j++;
  118. }
  119. }
  120. delete [] os;
  121. os=temp;
  122. }
  123. void dodadi(const OperativenSistem &nov){
  124. int flag=0;
  125. for(int i=0;i<brOS;i++){
  126. if(os[i].istaFamilija(nov)){
  127. if(os[i].sporediVerzija(nov)==-1){
  128. os[i]=nov;
  129. flag=1;
  130. break;
  131. }
  132. }
  133. }
  134. if(flag){
  135. os[brOS+1]=nov;
  136. }
  137. }
  138. };
  139.  
  140. int main(){
  141. char repoName[20];
  142. cin>>repoName;
  143. Repozitorium repozitorium=Repozitorium(repoName);
  144. int brojOperativniSistemi = 0;
  145. cin>>brojOperativniSistemi;
  146. char ime[20];
  147. float verzija;
  148. int tip;
  149. float golemina;
  150. for (int i = 0; i<brojOperativniSistemi; i++){
  151. cin>>ime;
  152. cin>>verzija;
  153. cin>>tip;
  154. cin>>golemina;
  155. OperativenSistem os = OperativenSistem(ime, verzija, (Tip)tip, golemina);
  156. repozitorium.dodadi(os);
  157. }
  158. repozitorium.pecatiOperativniSistemi();
  159. cin>>ime;
  160. cin>>verzija;
  161. cin>>tip;
  162. cin>>golemina;
  163. OperativenSistem os = OperativenSistem(ime, verzija, (Tip)tip, golemina);
  164. cout<<"=====Brishenje na operativen sistem====="<<endl;
  165. repozitorium.izbrishi(os);
  166. repozitorium.pecatiOperativniSistemi();
  167. return 0;
  168. }
Add Comment
Please, Sign In to add comment