Advertisement
Guest User

PT_Zapoctovka_2

a guest
Nov 27th, 2015
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.42 KB | None | 0 0
  1. /* --------------------------------------------------------------------------------
  2. Meno:
  3.  
  4. Subor premenujte na Priezvisko_Meno_Id_pisomka2_10hod.cpp (pouzite vase udaje, pripona musi ostat .cpp).
  5. Cela implementacia musi byt v tomto jednom subore (odovzdajte do miesta odovzdania v AIS len tento zdrojovy subor).
  6. Nemente deklaracie funkcii. <- DOLEZITE
  7. Programu musi byt kompilovatelny. <- DOLEZITE
  8. Nemente implementacie hotovych funkci, ani zadanych struktur a tried.
  9. V pripade potreby mozete kod doplnit o dalsie funkcie, struktury, alebo triedy.
  10. Globalne premenne su zakazane.
  11. Funkcia 'main' musi byt v zdrojovom kode posledna.
  12.  
  13. Vypracujte ulohy zadane dalej.
  14. V maine je uz pripravy testovaci kod.
  15. -------------------------------------------------------------------------------- */
  16.  
  17. #include <iostream>
  18. #include <vector>
  19. #include <list>
  20. #include <map>
  21. #include <set>
  22. #include <string>
  23. #include <sstream>
  24. #include <iomanip>
  25. #include <algorithm>
  26.  
  27. using namespace std;
  28.  
  29. #pragma warning( disable : 4290 ) //zabranenie warning-u //warning C4290 : C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
  30.  
  31. //---------- 1. uloha (1 bod) ---------------------------------------------------------
  32.  
  33. //Doplnte a otestujte implementaciu hash-ovacej funkcie.
  34. //Vstupom je e-mailova adresa 'emailAddress'.
  35. //Hash-ovacia funkcia musi byt zavisla iba od casti pred znakom '@', nesmie byt zavisla od zvysnej casti.
  36. //Ak by e-mailova adresa obsahovala viacero znakov '@', tak do vypoctu zahrnte iba znaky pred prvym vyskytom znaku '@'.
  37. //Ak by e-mailova adresa neobsahovala znak '@', tak hodnota hash-ovacej funkcie bude zavisiet od vsetkych znakov.
  38. //Algoritmus pre vypocet hash-u vypocita sumu ASCII kodov znakov, z ktorej potom vypocita zvysok po deleni 11.
  39. int hashEmailAddress(string emailAddress) {
  40. return -1; //tento riadok je len kvoli kompilacii
  41. }
  42.  
  43. //---------- 2. a 3. uloha (2 body a 1 bod) -----------------------------------------------------------
  44.  
  45. //2) Doplnte a otestujte kopirovaci konstruktor triedy 'Polygon', ktory zabezpeci vytvorenie hlbokej kopie. (2 body)
  46.  
  47. //3) Doplnte destruktor triedy 'Polygon', ktory dealokuje dynamicky akokovanu pamat v konstruktoroch
  48. // Pouzite spravnu verziu operatora. (1 bod)
  49.  
  50. struct Position { //struktura reprezentuje poziciu bodu polygonu
  51. int x;
  52. int y;
  53. };
  54.  
  55. class Polygon { //trieda reprezentuje polygon definovany postupnostou bodov
  56. private:
  57. Position* points; //pozicie bodov polygonu
  58. int length; //pocet bodov polygonu
  59. public:
  60. Polygon(int length) : length(length) {
  61. points = new Position[length];
  62. for (int i = 0; i < length; i++) {
  63. points[i].x = rand() % 10;
  64. points[i].y = rand() % 10;
  65. }
  66. }
  67. //TU DOPLNTE KOPIROVACI KONSTRUKTOR
  68.  
  69.  
  70. //TU DOPLNTE DESTRUKTOR
  71.  
  72.  
  73. void set(int index, int valueX, int valueY) {
  74. points[index].x = valueX;
  75. points[index].y = valueY;
  76. }
  77. string toString() { //funkcia vrati obsah polygonu ako string (pre testovacie ucely)
  78. ostringstream stream;
  79. for (int i = 0; i < length; i++) {
  80. stream << setw(3) << to_string(points[i].x) << ',' << setw(3) << to_string(points[i].y) << ", ";
  81. }
  82. return stream.str();
  83. }
  84. };
  85.  
  86. //---------- 4. uloha (1 bod) ------------------------------------------------------------------------
  87.  
  88. //Doplnte a otestujte implementaciu funkcie 'append', ktora prida na koniec zoznamu 'data' hodnotu 100.
  89. void append(list<int> & data) {
  90.  
  91. }
  92.  
  93. //---------- 5. uloha (1 bod) ------------------------------------------------------------------------
  94.  
  95. //Doplnte a otestujte implementaciu funkcie, ktora vrati pocet prvok zoznamu 'data' vacsich ako 500.
  96. //V implementacii pouzite funkciu 'count_if'
  97.  
  98. int countGreaterThan500(list<int> data) {
  99. return -1; //tento riadok je len kvoli kompilacii
  100. }
  101.  
  102. //---------- 6. uloha (2 body) ---------------------------------------------------------------
  103.  
  104. //Funkcia 'squareRoot' vrati druhu odmocninu vstupneho parametra 'number'.
  105. //Doplnte a otestujte implementaciu funkcie tak, aby funkcia vyhodila vynimku typu 'invalid_argument' ak je hodnota 'number' mensia ako 0.
  106. //Poznamka: konstruktor vynimky 'invalid_argument' musi mat zadany parameter.
  107. double squareRoot(double number) throw (invalid_argument) {
  108.  
  109. return sqrt(number);
  110. }
  111.  
  112. //---------- 7. uloha (2 body) ------------------------------------------------------------
  113.  
  114. //Doplnte a otestujte implementaciu funkcie 'contains' vykonavajucej binarne hladavanie nad usporiadanym vektorom 'sortedVector'.
  115. //Prvky su vo vstupnom vektore usporiadane od najmensieho po najvacsi.
  116. //Funkcia vrati 'true' ak vstupny vektor obsahuje hodnotu 'number', inak vrati 'false'.
  117. //Maximalny pocet iteracii/rekurzivnych volani musi byt logaritmus poctu prvkov vstupneho vektora.
  118. bool contains(int number, vector<int> & sortedVector) {
  119. return -1; //tento riadok je len kvoli kompilacii
  120. }
  121.  
  122. //-------------------------------------------------------------------------------------------
  123.  
  124. int main() {
  125.  
  126. cout << "---- 1. uloha ----" << endl;
  127. string email1 = "peter@gmail.com";
  128. string email2 = "peter@is.stuba.sk";
  129. string email3 = "palo@gmail.com";
  130. string email4 = "email_bez_zavinacu";
  131. string email5 = "aaaa@b@c";
  132. cout << hashEmailAddress(email1) << " == 5" << endl;
  133. cout << hashEmailAddress(email2) << " == 5" << endl;
  134. cout << hashEmailAddress(email3) << " == 10" << endl;
  135. cout << hashEmailAddress(email4) << " == 4" << endl;
  136. cout << hashEmailAddress(email5) << " == 3" << endl;
  137.  
  138. cout << "---- 2. uloha ----" << endl;
  139. Polygon p1(8);
  140. Polygon p2(p1);
  141. p1.set(1, 100, 200);
  142. p1.set(7, 300, 400);
  143. cout << p1.toString() << endl;
  144. cout << p2.toString() << endl;
  145.  
  146. cout << "---- 4. uloha ----" << endl;
  147. list<int> data4append = { 6, 7, 1, 2 };
  148. append(data4append);
  149. for (int value : data4append) {
  150. cout << value << ", ";
  151. }
  152. cout << endl;
  153.  
  154. cout << "---- 5. uloha ----" << endl;
  155. list<int> data5greater = { 1, 1001, 1005, 5, 6, 1007, 1009, 8, 2, 7, 3, 1004 };
  156. cout << countGreaterThan500(data5greater) << " == 5" << endl;
  157.  
  158. cout << "---- 6. uloha ----" << endl;
  159. try {
  160. cout << squareRoot(4) << " == 2" << endl;
  161. cout << squareRoot(16) << " == 4" << endl;
  162. }
  163. catch (invalid_argument & exception) {
  164. cout << "ERROR: BOLA VYHODNA VYNIMKA " << exception.what() << endl;
  165. }
  166. try {
  167. cout << squareRoot(-1) << endl;
  168. cout << "ERROR: NEBOLA VYHODENA VYNIMKA" << endl;
  169. }
  170. catch (invalid_argument & exception) {
  171. cout << "OK: bola vyhodna vynimka " << exception.what() << endl;
  172. }
  173.  
  174. cout << "---- 7. uloha ----" << endl;
  175. vector<int> v7 = { 10, 15, 20, 50, 60, 80, 90 };
  176. cout << contains(10, v7) << " == 1" << endl;
  177. cout << contains(15, v7) << " == 1" << endl;
  178. cout << contains(20, v7) << " == 1" << endl;
  179. cout << contains(50, v7) << " == 1" << endl;
  180. cout << contains(60, v7) << " == 1" << endl;
  181. cout << contains(80, v7) << " == 1" << endl;
  182. cout << contains(90, v7) << " == 1" << endl;
  183. cout << "-----" << endl;
  184. cout << contains( 1, v7) << " == 0" << endl;
  185. cout << contains(14, v7) << " == 0" << endl;
  186. cout << contains(51, v7) << " == 0" << endl;
  187. cout << contains(85, v7) << " == 0" << endl;
  188. cout << contains(100,v7) << " == 0" << endl;
  189. cout << "-----" << endl;
  190. vector<int> v71 = { 10 };
  191. cout << contains(10, v71) << " == 1" << endl;
  192. cout << "-----" << endl;
  193. cout << contains( 5, v71) << " == 0" << endl;
  194. cout << contains(15, v71) << " == 0" << endl;
  195. cout << "-----" << endl;
  196. vector<int> v70;
  197. cout << contains(10, v70) << " == 0" << endl;
  198.  
  199. return EXIT_SUCCESS;
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement