Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class Ucesnik
  6. {
  7. private:
  8. char *ime;
  9. bool pol;
  10. int vozrast;
  11.  
  12. public:
  13. Ucesnik()
  14. {
  15. ime=new char[0];
  16. }
  17.  
  18. Ucesnik(char *i, bool p, int v)
  19. {
  20. ime=new char[strlen(i)+1];
  21. strcpy(ime, i);
  22. pol=p;
  23. vozrast=v;
  24. }
  25.  
  26. Ucesnik(const Ucesnik &u)
  27. {
  28. ime=new char[strlen(u.ime)+1];
  29. strcpy(ime, u.ime);
  30. pol=u.pol;
  31. vozrast=u.vozrast;
  32. }
  33.  
  34. Ucesnik& operator= (const Ucesnik &u)
  35. {
  36. if(this!=&u)
  37. {
  38. delete[] ime;
  39. ime=new char[strlen(u.ime)+1];
  40. strcpy(ime, u.ime);
  41. pol=u.pol;
  42. vozrast=u.vozrast;
  43. }
  44. return *this;
  45. }
  46.  
  47. ~Ucesnik()
  48. {
  49. delete[] ime;
  50. }
  51.  
  52. int getVozrast()
  53. {
  54. return vozrast;
  55. }
  56.  
  57. friend bool operator> (const Ucesnik &u1, const Ucesnik &u2)
  58. {
  59. return u1.vozrast>u2.vozrast;
  60. }
  61.  
  62. friend ostream& operator<< (ostream &out, Ucesnik &u)
  63. {
  64. if(u.pol==0)
  65. {
  66. out<<u.ime<<endl;
  67. out<<"zenski"<<endl;
  68. out<<u.vozrast<<endl;
  69. }
  70. else
  71. {
  72. out<<u.ime<<endl;
  73. out<<"maski"<<endl;
  74. out<<u.vozrast<<endl;
  75. }
  76. }
  77. };
  78.  
  79. class Maraton
  80. {
  81. private:
  82. char lokacija[100];
  83. Ucesnik *ucesnici;
  84. int brUcesnici;
  85.  
  86. public:
  87. Maraton()
  88. {
  89. ucesnici=new Ucesnik[0];
  90. }
  91.  
  92. Maraton(char *l, Ucesnik *u, int brU)
  93. {
  94. strcpy(lokacija, l);
  95. ucesnici=new Ucesnik[brU];
  96. for(int i=0; i<brU; i++)
  97. {
  98. ucesnici[i]=u[i];
  99. }
  100. brUcesnici=brU;
  101. }
  102.  
  103. Maraton(const Maraton &m)
  104. {
  105. strcpy(lokacija, m.lokacija);
  106. ucesnici=new Ucesnik [m.brUcesnici];
  107. for(int i=0; i<m.brUcesnici; i++)
  108. {
  109. ucesnici[i]=m.ucesnici[i];
  110. }
  111. brUcesnici=m.brUcesnici;
  112. }
  113.  
  114. Maraton& operator= (const Maraton &m)
  115. {
  116. if(this!=&m)
  117. {
  118. delete[] ucesnici;
  119. strcpy(lokacija, m.lokacija);
  120. ucesnici=new Ucesnik[m.brUcesnici];
  121. for(int i=0; i<m.brUcesnici; i++)
  122. {
  123. ucesnici[i]=m.ucesnici[i];
  124. }
  125. brUcesnici=m.brUcesnici;
  126. }
  127. return *this;
  128. }
  129.  
  130. ~Maraton()
  131. {
  132. delete[] ucesnici;
  133. }
  134.  
  135. Maraton& operator+= (const Ucesnik &u)
  136. {
  137. Ucesnik *tmp;
  138. tmp=new Ucesnik[brUcesnici+1];
  139. for(int i=0; i<brUcesnici; i++)
  140. {
  141. tmp[i]=ucesnici[i];
  142. }
  143. tmp[brUcesnici]=u;
  144. delete[] ucesnici;
  145. ucesnici=tmp;
  146. brUcesnici++;
  147. return *this;
  148. }
  149.  
  150. int prosecnaVozrast()
  151. {
  152. int suma=0;
  153. for(int i=0; i<brUcesnici; i++)
  154. {
  155. suma+=ucesnici[i].getVozrast();
  156. }
  157. return suma/brUcesnici;
  158. }
  159.  
  160. int pecatiPomladi(Ucesnik &u)
  161. {
  162. for(int i=0; i<brUcesnici; i++)
  163. {
  164. if(ucesnici[i].getVozrast()<prosecnaVozrast())
  165. {
  166. cout<<ucesnici[i];
  167. }
  168. }
  169. }
  170. };
  171.  
  172. int main() {
  173. char ime[100];
  174. bool maski;
  175. int vozrast, n;
  176. cin >> n;
  177. char lokacija[100];
  178. cin >> lokacija;
  179. Maraton m(lokacija);
  180. Ucesnik **u = new Ucesnik*[n];
  181. for(int i = 0; i < n; ++i) {
  182. cin >> ime >> maski >> vozrast;
  183. u[i] = new Ucesnik(ime, maski, vozrast);
  184. m += *u[i];
  185. }
  186. m.pecatiPomladi(*u[n - 1]);
  187. cout << m.prosecnaVozrast() << endl;
  188. for(int i = 0; i < n; ++i) {
  189. delete u[i];
  190. }
  191. delete [] u;
  192. return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement