Advertisement
Guest User

Ptzapocet2

a guest
Dec 11th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.03 KB | None | 0 0
  1. /*
  2. Meno a priezvisko:
  3.  
  4. POKYNY:
  5. (1) Subor premenujte na Priezvisko_Meno_ID_pisomka2.cpp (pouzite vase udaje bez diakritiky).
  6. (2) Implementujte funkcie, metody, konstruktory a operatory tak, aby splnali popis (pri ich deklaraciach).
  7. (3) Cela implementacia musi byt v tomto jednom subore.
  8. (4) Odovzdajte len tento (spravne premenovany) zdrojovy subor.
  9. (5) Program musi byt kompilovatelny.
  10. (6) Globalne a staticke premenne su zakazane.
  11. (7) V ziadnom pripade nemente deklaracie funkcii, ktore mate za ulohu naprogramovat
  12. (nemente nazvy, navratove hodnoty ani typ a pocet parametrov v zadanych funkciach).
  13. Nemente implementacie zadanych datovych typov, ani implementacie hotovych pomocnych funkcii
  14. (ak nie je v zadani ulohy uvedene inak).
  15. (8) V pripade potreby mozete kod doplnit o dalsie pomocne funkcie alebo struktury.
  16. (9) Vase riesenie otestujte (vo funkcii 'main' a pomocou doplnenych pomocnych funkcii alebo struktur).
  17. Testovaci kod ale nebude hodnoteny.
  18. (10) Funkcia 'main' musi byt v zdrojovom kode posledna.
  19. */
  20.  
  21. #include <iostream>
  22. #include <iomanip>
  23. #include <vector>
  24. #include <list>
  25. #include <algorithm>
  26. #include <cctype>
  27. #include <string>
  28.  
  29. using namespace std;
  30.  
  31. //-------------------------------------------------------------------------------------------------
  32. // 1. ULOHA (3 body)
  33. //-------------------------------------------------------------------------------------------------
  34. /*
  35. Do triedy 'Rectangle' doplnte:
  36.  
  37. a) metodu 'getArea', ktora vrati obsah obdlznika
  38. Testovaci kod pre tuto ulohu musi byt kompilovatelny. Odkomentujte ho.
  39.  
  40. b) kopirovaci konstruktor,
  41. ktory v novovytvorenom objekte nastavi sirku aj vysku o 1 vacsiu ako su v objekte, ktoreho kopia sa vytvara.
  42.  
  43. c) operator porovnania ('operator==')
  44. Dva objekty triedy 'Rectangle' su rovnake, ak maju rovnake sirky a rovnake vysky.
  45. Mozete ho implementova ako clensky, alebo globalny.
  46. Testovaci kod pre tuto ulohu musi byt kompilovatelny. Odkomentujte ho.
  47.  
  48. Poznamka: atributy su verejne len kvoli testovaciemu kodu.
  49. */
  50. class Rectangle {
  51. public:
  52. int width; // sirka obdlznika
  53. int height; // vyska obdlznika
  54.  
  55. Rectangle(int width, int height) : width(width), height(height) {
  56. }
  57.  
  58. int getArea() {
  59. return this->width * this->height;
  60. }
  61.  
  62. Rectangle(const Rectangle& original) {
  63. this->width = original.width + 1;
  64. this->height = orignal.height + 1;
  65. }
  66.  
  67. bool operator==(const Rectangle& rec1, const Rectangle& rec2) {
  68. return rec1.width == rec2.width && rec1.hright == rec2.height;
  69. }
  70.  
  71. };
  72.  
  73. //-------------------------------------------------------------------------------------------------
  74. // 2. ULOHA (1 bod)
  75. //-------------------------------------------------------------------------------------------------
  76. /*
  77. Implementujte funkciu 'transformToUpper' tak, aby skonvertovala vsetky pismena vo vektore 'text' na velke.
  78. Vektor 'text' moze obsahovat lubovolne znaky, nie len pismena.
  79.  
  80. Odporucanie: pouzite 'std::transform' a 'toUpper'.
  81. */
  82.  
  83. // pomocna funkcia
  84. int toUpper(unsigned char c) noexcept {
  85. return std::toupper(c);
  86. }
  87.  
  88. void transformToUpper(vector<char> & text) noexcept {
  89. transform(text.begin(), text.end(), text.begin(), toUpper);
  90. }
  91.  
  92. //-------------------------------------------------------------------------------------------------
  93. // 3. ULOHA (1 bod)
  94. //-------------------------------------------------------------------------------------------------
  95. /*
  96. Funkcia 'divide' vykona celociselne delenie a vrati vysledok.
  97.  
  98. Doplnte implementaciu funkcie 'divide' tak, aby v pripade delenia nulou, vyhodila vynimku typu 'DivisionByZeroException'.
  99. Poznamka: funkcia vynimku vyhodi, ale nezachytava.
  100.  
  101. PARAMETRE:
  102. [in] divident - delenec
  103. [in] divisor - delitel
  104.  
  105. RETURN:
  106. Podiel (divident/divisor)
  107.  
  108. EXCEPTION:
  109. Ak je 'divisor' (delitel) nula, tak vyhodi vynimku typu 'DivisionByZeroException'.
  110.  
  111. Odkomentujte testovaci kod.
  112. */
  113.  
  114. class DivisionByZeroException {
  115. };
  116.  
  117. int divide(int divident, int divisor) {
  118. if (divisor == 0) {
  119. throw DivisionByZeroException();
  120. }
  121. return divident / divisor;
  122. }
  123.  
  124. //-------------------------------------------------------------------------------------------------
  125. // 4. ULOHA ( 2 body)
  126. //-------------------------------------------------------------------------------------------------
  127.  
  128. // Datove typy pre 4. a 5. ulohu
  129.  
  130. // Uzol binarneho vyhladavacieho stromu
  131. struct Node {
  132. int value; // hodnota uzla
  133. Node *left; // mensie prvky
  134. Node *right; // vacsie prvky
  135. };
  136.  
  137. // Strom
  138. struct Tree {
  139. Node *root; // koren stromu
  140. };
  141.  
  142. /*
  143. Implementujte funkciu 'all', ktora vrati usporiadany zoznam vsetkych prvkov v strome 'tree'.
  144. Usporiadanie vystupneho zoznamu je od najmensieho prvku po najvacsi.
  145. Usporiadanie dosiahnite prechodom stromu do hlbky, v poradi inorder.
  146. Pre kazdy uzol stromu plati, ze v jeho lavom podstrome su prvky s mensou hodnotou, v pravom podstrome prvky s vacsou hodnotou.
  147.  
  148. Ak sa rozhodnete pre rekurzivnu implementaciu, tak mozete vytvorit a zavolat dalsiu funkciu,
  149. v ktorej bude prevazna cast implementacie.
  150. */
  151.  
  152. void allRecursive(Node* root, list<int>& cisla) {
  153. if (root) {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement