2. 3. Да се креира класа Patnik во која се чуваат податоци за патниците на еден воз и тоа: име (низа од максимум 100 знаци), класа на вагон во која се вози (цел број 1 или 2) и велосипед (булова променлива). (5 поени) 4. 5. За оваа класа да се преоптоварат: 6. 7. Оператор << - за печатење на информациите за патникот во формат: (5 поени) 8. Име на патник 9. 10. Бројот на класата (1 или 2) 11. 12. Дали има велосипед? 13. 14. Потоа да се креира клaса Voz во која се чува: крајна дестинација (низа од максимум 100 знаци), динамички алоцирана низа од објекти од класата Patnik, како и број на елементи во низата (цел број), број на дозволени велосипеди (цел број). (5 поени) 15. 16. За класата да се обезбедат: 17. 18. Оператор += – за додавање нов патник во воз. Патник со велосипед ќе може да се качи во воз само ако возот го дозволува тоа. (10 поени) 19. Оператор << - за печатење на крајната дестинација до која вози и листата на патници (5 поени) 20. Функција со потпис: patniciNemaMesto(). Со оваа функција се пресметува вкупниот број на патници (од 1-ва класа и 2-ра класа) за кои нема место да влезат во возот со велосипед. Притоа треба да се внимава дека во пресметувањето на вкупниот број патници со велосипеди кои ќе влезат во возот прво треба да се земат предвид патниците од 1-ва класа, а потоа се дозволува да влегуваат патниците од 2-ра класа се додека не се достигне максималниот број на дозволени велосипеди во возот. На крај се печати бројот на патници со велосипеди кои остануваат (не влегуваат во возот) од 1-ва класа, а потоа од 2-ра класа. (10 поени) 21. 22. #include<iostream> 23. #include<cstring> 24. using namespace std; 25. 26. class Patnik 27. { 28. 29. private: 30. char ime[100]; 31. int klasa; 32. bool velosiped; 33. public: 34. Patnik() {} 35. Patnik(char *ime,int kl,bool v) 36. { 37. strcpy(ime,ime); 38. klasa = kl; 39. velosiped = v; 40. } 41. 42. 43. friend ostream &operator <<(ostream &o, Patnik &p) 44. { 45. o << p.ime<< endl; 46. o << p.klasa <<endl; 47. o << p.velosiped << endl; 48. return o; 49. } 50. ~Patnik() {} 51. }; 52. 53. class Voz 54. { 55. 56. private: 57. char krajnaDestinacija[100]; 58. Patnik *p; 59. int brElemeni; 60. int brVelosipedi; 61. public: 62. Voz(char *kD,int brV) 63. { 64. strcpy(krajnaDestinacija,kD); 65. // p = new Patnik[0]; 66. // brElemeni = brE; 67. brVelosipedi = brV; 68. } 69. 70. Voz(const Voz &v) 71. { 72. strcpy(krajnaDestinacija,v.krajnaDestinacija); 73. //p = new Patnik [v.brElemeni+1]; 74. // brElemeni = v.brElemeni; 75. brVelosipedi = v.brVelosipedi; 76. } 77. 78. Voz &operator =(const Voz &v) 79. { 80. if(this!=&v) 81. { 82. delete [] p; 83. brElemeni = v.brElemeni; 84. for(int i=0; i < brElemeni; i++) 85. { 86. p[i]=v.p[i]; 87. } 88. p= new Patnik[brElemeni]; 89. strcpy(krajnaDestinacija,v.krajnaDestinacija); 90. brVelosipedi = v.brVelosipedi; 91. } 92. return *this; 93. } 94. 95. Voz &operator += (Voz &v) 96. { 97. if(brElemeni == 0) 98. p = new Patnik[1]; 99. Patnik *tmp = new Patnik[brElemeni+1]; 100. for(int i=0; i < brElemeni; i++) 101. { 102. tmp[i]=p[i]; 103. } 104. tmp[brElemeni++] = v; 105. delete [] p; 106. p=tmp; 107. return *this; 108. } 109. 110. friend ostream &operator <<(ostream &o, Voz &v) 111. { 112. o << v.krajnaDestinacija<<endl; 113. for(int i = 0; i < v.brElemeni; i++) 114. { 115. o << v.p[i]; 116. } 117. return o; 118. } 119. 120. int patniciNemaMesto() 121. { 122. 123. 124. cout << "Brojot na patnici od 1-va klasa koi ostanale bez mesto e: "<<brPrva<<endl; 125. cout << "Brojot na patnici od 2-va klasa koi ostanale bez mesto e: "<<brVtora; 126. } 127. 128. 129. ~Voz() 130. { 131. delete [] p; 132. } 133. }; 134. 135. 136. int main() 137. { 138. Patnik p; 139. char ime[100], destinacija[100]; 140. int n; 141. bool velosiped; 142. int klasa; 143. int maxv; 144. cin >> destinacija >> maxv; 145. cin >> n; 146. Voz v(destinacija, maxv); 147. //cout<<v<<endl; 148. for (int i = 0; i < n; i++) 149. { 150. cin >> ime >> klasa >> velosiped; 151. Patnik p(ime, klasa, velosiped); 152. //cout<<p<<endl; 153. v += p; 154. } 155. cout << v; 156. //v.patniciNemaMesto(); 157. 158. return 0; 159. } 160. Berlin 161. 10 162. 20 163. Ana 164. 1 165. 1 166. Kate 167. 2 168. 0 169. Ace 170. 2 171. 0 172. Borce 173. 1 174. 1 175. Mimi 176. 2 177. 1 178. Deni 179. 1 180. 0 181. Nikola 182. 1 183. 1 184. Bojan 185. 1 186. 1 187. Tamara 188. 1 189. 1 190. Kiki 191. 2 192. 1 193. Ana 194. 1 195. 1 196. Kate 197. 2 198. 0 199. Ace 200. 1 201. 1 202. Borce 203. 1 204. 1 205. Mimi 206. 1 207. 0 208. Deni 209. 1 210. 0 211. Nikola 212. 1 213. 1 214. Bojan 215. 1 216. 1 217. Tamara 218. 2 219. 0 220. Kiki 221. 1 222. 1 223. 224. Sample output 225. Berlin 226. Ana 227. 1 228. 1 229. 230. Kate 231. 2 232. 0 233. 234. Ace 235. 2 236. 0 237. 238. Borce 239. 1 240. 1 241. 242. Mimi 243. 2 244. 1 245. 246. Deni 247. 1 248. 0 249. 250. Nikola 251. 1 252. 1 253. 254. Bojan 255. 1 256. 1 257. 258. Tamara 259. 1 260. 1 261. 262. Kiki 263. 2 264. 1 265. 266. Ana 267. 1 268. 1 269. 270. Kate 271. 2 272. 0 273. 274. Ace 275. 1 276. 1 277. 278. Borce 279. 1 280. 1 281. 282. Mimi 283. 1 284. 0 285. 286. Deni 287. 1 288. 0 289. 290. Nikola 291. 1 292. 1 293. 294. Bojan 295. 1 296. 1 297. 298. Tamara 299. 2 300. 0 301. 302. Kiki 303. 1 304. 1 305. 306. Brojot na patnici od 1-va klasa koi ostanale bez mesto e: 1 307. Brojot na patnici od 2-ra klasa koi ostanale bez mesto e: 2