Advertisement
frusso1337

31231

Apr 2nd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.56 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. class Runner {
  8. private :
  9. char * ime;
  10. char drzava[50];
  11. int minuti;
  12. int sekundi;
  13. int brmedali;
  14. public:
  15. Runner(){
  16. ime = new char [0];
  17. }
  18. Runner(const char * ime, const char * drzava, int minuti, int sekundi, int brmedali)
  19. {
  20. this->ime=new char [strlen(ime)+1];
  21. strcpy(this->ime,ime);
  22. strcpy(this->drzava,drzava);
  23. this->minuti=minuti;
  24. this->sekundi=sekundi;
  25. this->brmedali=brmedali;
  26. }
  27. ~Runner()
  28. {
  29. delete [] ime;
  30. }
  31. Runner(const Runner &r)
  32. {
  33. this->ime=new char [strlen(r.ime)+1];
  34. strcpy(this->ime,r.ime);
  35. strcpy(this->drzava,r.drzava);
  36. this->minuti=r.minuti;
  37. this->sekundi=r.sekundi;
  38. this->brmedali=r.brmedali;
  39. }
  40. Runner &operator=(const Runner &r)
  41. {
  42. if(this!=&r)
  43. {
  44. delete [] ime;
  45. this->ime=new char [strlen(r.ime)+1];
  46. strcpy(this->ime,r.ime);
  47. strcpy(this->drzava,r.drzava);
  48. this->minuti=r.minuti;
  49. this->sekundi=r.sekundi;
  50. this->brmedali=r.brmedali;
  51. }
  52. return *this;
  53. }
  54.  
  55. friend ostream& operator<<(ostream &output,Runner &r) {
  56.  
  57. output<<r.ime<<"-"<<r.drzava<<"-"<<r.minuti<<":"<<r.sekundi<<"-"<<r.brmedali;
  58. output<<endl;
  59. return output;
  60. }
  61. Runner & operator++()
  62. {
  63. brmedali++;
  64. return *this;
  65.  
  66. }
  67.  
  68. bool operator !=(const Runner &r)
  69. {
  70. return strcmp(drzava,r.drzava) ;
  71. }
  72.  
  73. bool operator <(Runner &r)
  74. {
  75. if(minuti==r.minuti)
  76. {
  77. return sekundi<r.sekundi;
  78. }
  79.  
  80. return minuti<r.minuti;
  81.  
  82. }
  83.  
  84.  
  85.  
  86.  
  87. };
  88.  
  89. class Race
  90. {
  91. private :
  92. char ime[50];
  93. Runner * trkaci;
  94. int brtrkaci;
  95.  
  96.  
  97. public :
  98. Race(const char * ime)
  99. {
  100. strcpy(this->ime,ime);
  101. this->trkaci=new Runner[0];
  102. this->brtrkaci=0;
  103. }
  104.  
  105. ~Race()
  106. {
  107. delete [] trkaci;
  108. }
  109.  
  110. Race(const Race &rc)
  111. {
  112.  
  113. this->brtrkaci=rc.brtrkaci;
  114. strcpy(ime,rc.ime);
  115. trkaci=new Runner[brtrkaci];
  116. for(int i=0;i<brtrkaci;i++)
  117. trkaci[i]=rc.trkaci[i];
  118.  
  119.  
  120.  
  121. }
  122.  
  123. Race &operator=(const Race &rc)
  124. {
  125. if(this!=&rc)
  126. {
  127. delete [] trkaci;
  128. strcpy(this->ime,rc.ime);
  129. this->trkaci=new Runner [rc.brtrkaci+1];
  130. brtrkaci=rc.brtrkaci;
  131. strcpy(ime,rc.ime);
  132. for(int i=0;i<brtrkaci;i++)
  133. trkaci[i]=rc.trkaci[i];
  134. brtrkaci=rc.brtrkaci;
  135.  
  136.  
  137.  
  138. } return *this;
  139.  
  140. }
  141.  
  142. Race &operator +=(const Runner &r)
  143. {
  144. Runner *pom=new Runner[brtrkaci+1];
  145. for(int i=0;i<brtrkaci;i++)
  146. {
  147. pom[i]=trkaci[i];
  148. }
  149.  
  150. brtrkaci++;
  151. pom[brtrkaci]=r;
  152.  
  153. delete [] trkaci;
  154.  
  155. trkaci=pom;
  156.  
  157.  
  158.  
  159. return *this;
  160. }
  161.  
  162.  
  163.  
  164. Race & operator-=(const Runner &r)
  165. {
  166. int br=0;
  167.  
  168. for(int i=0;i<brtrkaci;i++)
  169. {
  170. if(trkaci[i]!=r)
  171. br++;
  172. }
  173.  
  174.  
  175. Runner *pom = new Runner[br];
  176. int j=0;
  177.  
  178. for(int i=0;i<brtrkaci;i++)
  179. {
  180. if(trkaci[i]!=r)
  181. {
  182. pom[j]=trkaci[i];
  183. j++;
  184.  
  185. }
  186. }
  187.  
  188. delete [] trkaci;
  189. trkaci = pom ;
  190. brtrkaci=br;
  191.  
  192.  
  193. return *this;
  194.  
  195.  
  196. }
  197.  
  198.  
  199. friend ostream &operator << (ostream &o, Race &r)
  200.  
  201.  
  202. {
  203. o<<r.ime<<" : "<<endl;
  204. for(int i=0;i<r.brtrkaci;++i)
  205. o<<r.trkaci[i];
  206. return o;
  207.  
  208.  
  209.  
  210. }
  211.  
  212.  
  213. Race &operator++()
  214.  
  215. {
  216.  
  217. Runner najbrz=trkaci[0];
  218.  
  219. int j=0;
  220.  
  221.  
  222. for(int i=0;i<brtrkaci;i++)
  223. {
  224. if(trkaci[i]<najbrz)
  225. {
  226. najbrz=trkaci[i];
  227. j=i;
  228. }
  229.  
  230.  
  231. }
  232.  
  233.  
  234. ++trkaci[j];
  235. return *this;
  236.  
  237. }
  238.  
  239. };
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256. int main() {
  257.  
  258. int n;
  259. cin >> n;
  260.  
  261. char nameRace[50];
  262. cin >> nameRace;
  263.  
  264. Race race = Race(nameRace);
  265. int m;
  266. cin >> m;
  267.  
  268. char name[50];
  269. char country[50];
  270. int minutes;
  271. int seconds;
  272. int numberOfMedals;
  273. for (int i=0; i < m; ++i) {
  274. cin >> name;
  275. cin >> country;
  276. cin >> minutes;
  277. cin >> seconds;
  278. cin >> numberOfMedals;
  279. Runner r = Runner(name,country,minutes,seconds,numberOfMedals);
  280. race += r;
  281. }
  282. cout << race;
  283.  
  284. if (n == 1) {
  285. ++race;
  286. cout << race;
  287. }
  288. else if (n == 2) {
  289. cin >> name;
  290. cin >> country;
  291. cin >> minutes;
  292. cin >> seconds;
  293. cin >> numberOfMedals;
  294. Runner r = Runner(name,country,minutes,seconds,numberOfMedals);
  295. race -= r;
  296. cout << race;
  297. }
  298. else if (n == 3) {
  299. cin >> name;
  300. cin >> country;
  301. cin >> minutes;
  302. cin >> seconds;
  303. cin >> numberOfMedals;
  304. Runner r = Runner(name,country,minutes,seconds,numberOfMedals);
  305. race -= r;
  306. ++race;
  307. cout << race;
  308. }
  309. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement