Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.57 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using namespace std;
  5.  
  6. struct elem
  7. {
  8. string name;
  9. string diploma;
  10. elem* next;
  11. };
  12.  
  13. class table
  14. {
  15. private:
  16. int count = 0;
  17. elem* first;
  18. public:
  19. table()
  20. {
  21. first = nullptr;
  22. }
  23.  
  24. void addElem(string nam, string diplom)
  25. {
  26. count++;
  27. if (count - 1 == 0)
  28. {
  29. first = new elem;
  30. first->name = nam;
  31. first->diploma = diplom;
  32. first->next = nullptr;
  33. }
  34. else
  35. {
  36. /* first->next = first;
  37. first = first->next->prev = new elem;
  38. first->name = nam;
  39. first->diploma = diplom;*/
  40. elem* newEl = new elem;
  41. newEl->name = nam;
  42. newEl->diploma = diplom;
  43. newEl->next = first;
  44. first = newEl;
  45. }
  46. }
  47. string getNextName(string searched)
  48. {
  49. elem* currentElem = first;
  50. string result = " ";
  51. while (currentElem)
  52. {
  53. if (currentElem->name == searched && currentElem->next != nullptr)
  54. {
  55. result = currentElem->next->name;
  56. return result;
  57. }
  58. currentElem = currentElem->next;
  59. }
  60. return result;
  61. }
  62.  
  63. elem removeElem(string nam)
  64. {
  65. bool removed = false;
  66. elem result;
  67. elem* currentElem = first;
  68. elem* prevEl = first;
  69. while (currentElem!=nullptr)
  70. {
  71. if ((currentElem->name == nam) && (currentElem == first))
  72. {
  73. result = *currentElem;
  74. count--;
  75. first = currentElem->next;
  76. delete currentElem;
  77. removed = true;
  78. break;
  79. }
  80. else if (currentElem->name == nam)
  81. {
  82. result = *currentElem;
  83. count--;
  84. if (currentElem->next != nullptr)
  85. {
  86. prevEl->next = currentElem->next;
  87. }
  88. delete currentElem;
  89. removed = true;
  90. break;
  91. }
  92. else
  93. {
  94. prevEl = currentElem;
  95. currentElem = currentElem->next;
  96. }
  97. }
  98. if (!removed)
  99. {
  100. cout << "No such elemet" << endl;
  101. return result;
  102. }
  103. else
  104. {
  105. cout << nam << " removed" << endl;
  106. return result;
  107. }
  108. }
  109.  
  110. string searchDiploma(string searched)
  111. {
  112. string result;
  113. elem* currentElem = first;
  114. bool search = false;
  115. while (currentElem)
  116. {
  117. if (currentElem->name == searched)
  118. {
  119. result = currentElem->diploma;
  120. search = true;
  121. break;
  122. }
  123. currentElem = currentElem->next;
  124. }
  125. if (!search)
  126. {
  127. cout << "No such element" << endl;
  128. }
  129. return result;
  130. }
  131.  
  132. void outPut()
  133. {
  134. elem* currentElem = first;
  135. cout << endl;
  136. while (currentElem)
  137. {
  138. cout << currentElem->name << " " << currentElem->diploma << endl;
  139. currentElem = currentElem->next;
  140. }
  141. cout << endl;
  142. }
  143.  
  144. void changeDiploma(string nam, string dipl)
  145. {
  146. elem* currentElem = first;
  147. bool change = false;
  148. while (currentElem)
  149. {
  150. if (currentElem->name == nam)
  151. {
  152. currentElem->diploma = dipl;
  153. change = true;
  154. break;
  155. }
  156. currentElem = currentElem->next;
  157. }
  158. if (!change)
  159. {
  160. cout << "No such element" << endl;
  161. }
  162. }
  163.  
  164. /*void iterate(void(*pf))
  165. {
  166. elem* currentElem = first;
  167. while (currentElem != nullptr)
  168. {
  169. (currentElem->diploma);
  170. }
  171. }*/
  172.  
  173. ~table()
  174. {
  175. if (count > 1)
  176. {
  177. elem* delEl;
  178. while (first->next)
  179. {
  180. delEl = first->next;
  181. first->next = first->next->next;
  182. delete delEl;
  183. }
  184. }
  185. delete first;
  186. }
  187. friend bool dynamicTest(int);
  188. friend bool removeTest();
  189. friend bool addTest();
  190. };
  191.  
  192. bool addTest()
  193. {
  194. table tb;
  195. bool testResult = true;
  196. tb.addElem("Hugo", "LesMiserables");
  197. testResult &= (tb.first->name) == "Hugo";
  198. tb.addElem("EdgarPoe", "Raven");
  199. testResult &= (tb.first->name) == "EdgarPoe";
  200. testResult &= (tb.first->next->name) == "Hugo";
  201. return testResult;
  202. }
  203.  
  204.  
  205. bool removeTest()
  206. {
  207. table tb;
  208. bool testResult = true;
  209. tb.addElem("Hugo", "LesMiserables");
  210. tb.addElem("EdgarPoe", "Raven");
  211. tb.addElem("Jerome", "ThreeManInBoat");
  212. testResult &= tb.removeElem("EdgarPoe").name == "EdgarPoe";
  213. testResult &= tb.getNextName("Jerome") == "Hugo";
  214. testResult &= tb.removeElem("Jerome").name == "Jerome";
  215. testResult &= tb.getNextName("Hugo") == " ";
  216. return testResult;
  217. }
  218.  
  219. bool changeDiplomaTest()
  220. {
  221. table tb;
  222. bool testResult = true;
  223. tb.addElem("Hugo", "LesMiserables");
  224. tb.addElem("EdgarPoe", "Raven");
  225. testResult &= tb.searchDiploma("EdgarPoe") == "Raven";
  226. tb.changeDiploma("EdgarPoe", "Lenore");
  227. testResult &= tb.searchDiploma("EdgarPoe") == "Lenore";
  228. return testResult;
  229. }
  230.  
  231. /*void fun(string st)
  232. {
  233. st += "It";
  234. }
  235.  
  236. bool iteratTast()
  237. {
  238. void (*pf)(string) = &fun;
  239.  
  240. }*/
  241.  
  242. void main()
  243. {
  244. cout << "Add test result: " << addTest() << endl;
  245. cout << "Remove test result: " << removeTest() << endl;
  246. cout << "Change diploma test result: " << changeDiplomaTest() << endl;
  247. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement