Advertisement
Guest User

kolekcija parovi

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