Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Meno a priezvisko:
- POKYNY:
- (1) Subor premenujte na Priezvisko_Meno_ID_pisomka2.cpp (pouzite vase udaje bez diakritiky).
- (2) Implementujte funkcie, metody, konstruktory a operatory tak, aby splnali popis (pri ich deklaraciach).
- (3) Cela implementacia musi byt v tomto jednom subore.
- (4) Odovzdajte len tento (spravne premenovany) zdrojovy subor.
- (5) Program musi byt kompilovatelny.
- (6) Globalne a staticke premenne su zakazane.
- (7) V ziadnom pripade nemente deklaracie funkcii, ktore mate za ulohu naprogramovat
- (nemente nazvy, navratove hodnoty ani typ a pocet parametrov v zadanych funkciach).
- Nemente implementacie zadanych datovych typov, ani implementacie hotovych pomocnych funkcii
- (ak nie je v zadani ulohy uvedene inak).
- (8) V pripade potreby mozete kod doplnit o dalsie pomocne funkcie alebo struktury.
- (9) Vase riesenie otestujte (vo funkcii 'main' a pomocou doplnenych pomocnych funkcii alebo struktur).
- Testovaci kod ale nebude hodnoteny.
- (10) Funkcia 'main' musi byt v zdrojovom kode posledna.
- */
- #include <iostream>
- #include <iomanip>
- #include <vector>
- #include <list>
- #include <algorithm>
- #include <cctype>
- #include <string>
- using namespace std;
- //-------------------------------------------------------------------------------------------------
- // 1. ULOHA (3 body)
- //-------------------------------------------------------------------------------------------------
- /*
- Do triedy 'Rectangle' doplnte:
- a) metodu 'getArea', ktora vrati obsah obdlznika
- Testovaci kod pre tuto ulohu musi byt kompilovatelny. Odkomentujte ho.
- b) kopirovaci konstruktor,
- ktory v novovytvorenom objekte nastavi sirku aj vysku o 1 vacsiu ako su v objekte, ktoreho kopia sa vytvara.
- c) operator porovnania ('operator==')
- Dva objekty triedy 'Rectangle' su rovnake, ak maju rovnake sirky a rovnake vysky.
- Mozete ho implementova ako clensky, alebo globalny.
- Testovaci kod pre tuto ulohu musi byt kompilovatelny. Odkomentujte ho.
- Poznamka: atributy su verejne len kvoli testovaciemu kodu.
- */
- class Rectangle {
- public:
- int width; // sirka obdlznika
- int height; // vyska obdlznika
- Rectangle(int width, int height) : width(width), height(height) {
- }
- int getArea() {
- return this->width * this->height;
- }
- Rectangle(const Rectangle& original) {
- this->width = original.width + 1;
- this->height = orignal.height + 1;
- }
- bool operator==(const Rectangle& rec1, const Rectangle& rec2) {
- return rec1.width == rec2.width && rec1.hright == rec2.height;
- }
- };
- //-------------------------------------------------------------------------------------------------
- // 2. ULOHA (1 bod)
- //-------------------------------------------------------------------------------------------------
- /*
- Implementujte funkciu 'transformToUpper' tak, aby skonvertovala vsetky pismena vo vektore 'text' na velke.
- Vektor 'text' moze obsahovat lubovolne znaky, nie len pismena.
- Odporucanie: pouzite 'std::transform' a 'toUpper'.
- */
- // pomocna funkcia
- int toUpper(unsigned char c) noexcept {
- return std::toupper(c);
- }
- void transformToUpper(vector<char> & text) noexcept {
- transform(text.begin(), text.end(), text.begin(), toUpper);
- }
- //-------------------------------------------------------------------------------------------------
- // 3. ULOHA (1 bod)
- //-------------------------------------------------------------------------------------------------
- /*
- Funkcia 'divide' vykona celociselne delenie a vrati vysledok.
- Doplnte implementaciu funkcie 'divide' tak, aby v pripade delenia nulou, vyhodila vynimku typu 'DivisionByZeroException'.
- Poznamka: funkcia vynimku vyhodi, ale nezachytava.
- PARAMETRE:
- [in] divident - delenec
- [in] divisor - delitel
- RETURN:
- Podiel (divident/divisor)
- EXCEPTION:
- Ak je 'divisor' (delitel) nula, tak vyhodi vynimku typu 'DivisionByZeroException'.
- Odkomentujte testovaci kod.
- */
- class DivisionByZeroException {
- };
- int divide(int divident, int divisor) {
- if (divisor == 0) {
- throw DivisionByZeroException();
- }
- return divident / divisor;
- }
- //-------------------------------------------------------------------------------------------------
- // 4. ULOHA ( 2 body)
- //-------------------------------------------------------------------------------------------------
- // Datove typy pre 4. a 5. ulohu
- // Uzol binarneho vyhladavacieho stromu
- struct Node {
- int value; // hodnota uzla
- Node *left; // mensie prvky
- Node *right; // vacsie prvky
- };
- // Strom
- struct Tree {
- Node *root; // koren stromu
- };
- /*
- Implementujte funkciu 'all', ktora vrati usporiadany zoznam vsetkych prvkov v strome 'tree'.
- Usporiadanie vystupneho zoznamu je od najmensieho prvku po najvacsi.
- Usporiadanie dosiahnite prechodom stromu do hlbky, v poradi inorder.
- Pre kazdy uzol stromu plati, ze v jeho lavom podstrome su prvky s mensou hodnotou, v pravom podstrome prvky s vacsou hodnotou.
- Ak sa rozhodnete pre rekurzivnu implementaciu, tak mozete vytvorit a zavolat dalsiu funkciu,
- v ktorej bude prevazna cast implementacie.
- */
- void allRecursive(Node* root, list<int>& cisla) {
- if (root) {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement