Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.36 KB | None | 0 0
  1. /*
  2. 1. ZADATAK
  3.  
  4. Izvršiti definiciju funkcija na način koji odgovara opisu (komentarima) datom
  5. neposredno uz pozive ili nazive funkcija. Možete dati komentar na bilo koju liniju
  6. code-a koju smatrate da bi trebalo unaprijediti ili da će eventualno uzrokovati
  7. grešku prilikom kompajliranja. Također, možete dodati dodatne funkcije koje će vam
  8. olakšati implementaciju programa.
  9.  
  10.  
  11. 1. BROJ I VRSTA PARAMETARA MORAJU BITI IDENTICNI KAO U PRIMJERIMA. U SUPROTNOM SE RAD
  12. NEĆE BODOVATI
  13.  
  14. 2. STAVITE KOMENTAR NA DIJELOVE CODE-A KOJE NE BUDETE IMPLEMENTIRALI
  15.  
  16. 3. KREIRAJTE .DOC FAJL SA VAŠIM BROJEM INDEKSA ( NPR. IB130030.DOC BEZ
  17. IMENA I PREZIMENA), TE NA KRAJU ISPITA U NJEGA KOPIRAJTE RJEŠENJA VAŠIH ZADATAKA.
  18. NE PREDAVATI .TXT ILI .CPP FAJLOVE
  19.  
  20. 4. TOKOM IZRADE ISPITA NIJE DOZVOLJENO KORIŠTENJE HELP-A
  21.  
  22. 5. TOKOM IZRADE ISPITA MOGU BITI POKRENUTA SAMO TRI PROGRAMA: PDF READER
  23. (ISPITNI ZADACI), MS VISUAL STUDIO, MS WORD (U KOJI ĆETE KOPIRATI VAŠA RJEŠENJA)
  24.  
  25. 6. BEZ OBZIRA NA TO DA LI SU ISPITNI ZADACI URAĐENI, SVI STUDENTI KOJI SU
  26. PRISTUPILI ISPITU MORAJU PREDATI SVOJ RAD
  27. */
  28.  
  29. #include<iostream>
  30. using namespace std;
  31.  
  32. //narednu liniju code-a ignorisite, osim u slucaju da vam bude predstavljala smetnje u radu
  33. #pragma warning(disable:4996)
  34.  
  35. char *crt = "\n-------------------------------------------\n";
  36.  
  37. enum vrstaDokumenta { PDF, DOC, TXT, HTML };
  38. char *vrstaDokumentaTEXT[]= { "PDF", "DOC","TXT","HTML" };
  39. enum prioritet { VISOK, SREDNJI, NIZAK };
  40. char *prioritetTEXT[] = { "VISOK", "SREDNJI","NIZAK"};
  41. struct DatumVrijeme {
  42.     int *_dan, *_mjesec, *_godina, *_sati, *_minuti;
  43.     void Unos(int dan = 1, int mjesec = 1, int godina = 2000, int sati = 0, int minuti = 0) {
  44.         _dan = new int(dan);
  45.         _mjesec = new int(mjesec);
  46.         _godina = new int(godina);
  47.         _sati = new int(sati);
  48.         _minuti = new int(minuti);
  49.     }
  50.     void Dealociraj() {
  51.         delete _dan; _dan = nullptr;
  52.         delete _mjesec; _mjesec = nullptr;
  53.         delete _godina; _godina = nullptr;
  54.         delete _sati; _sati = nullptr;
  55.         delete _minuti; _minuti = nullptr;
  56.  
  57.     }
  58.     void Ispis() {
  59.         cout << *_dan << "." << *_mjesec << "." << *_godina << " " << *_sati << ":" << *_minuti << endl;
  60.     }
  61. };
  62.  
  63. struct Filter {
  64.     char * _sadrzaj;
  65.     prioritet _prioritet;
  66.     void Unos(char * sadrzaj, prioritet prioritet) {
  67.         int vel = strlen(sadrzaj) + 1;
  68.         _sadrzaj = new char[vel];
  69.         strcpy_s(_sadrzaj, vel, sadrzaj);
  70.         _prioritet = prioritet;
  71.     }
  72.     void Dealociraj() {
  73.         delete[] _sadrzaj; _sadrzaj = nullptr;
  74.     }
  75.     void Ispis() { cout << _sadrzaj << " (" << _prioritet << ")" << endl; }
  76.  
  77. };
  78.  
  79. struct Dokument {
  80.     vrstaDokumenta _vrsta;
  81.     char * _naziv;
  82.     char * _sadrzaj;
  83.     DatumVrijeme _kreiran;
  84.     int _brojStranica;
  85.  
  86.     void Unos(vrstaDokumenta vrsta, char * naziv, DatumVrijeme kreiran) {
  87.         int vel = strlen(naziv) + 1;
  88.         _naziv = new char[vel];
  89.         strcpy_s(_naziv, vel, naziv);
  90.         _sadrzaj = new char();
  91.         _vrsta = vrsta;
  92.         _kreiran.Unos(*kreiran._dan, *kreiran._mjesec, *kreiran._godina, *kreiran._sati, *kreiran._minuti);
  93.         _brojStranica = 0;//broj stranica se odredjuje prilikom dodavanja svakog novog sadrzaja dokumentu
  94.     }
  95.     void Dealociraj() {
  96.         delete[] _naziv; _naziv = nullptr;
  97.         delete[] _sadrzaj; _sadrzaj = nullptr;
  98.         _kreiran.Dealociraj();
  99.     }
  100.     void DodajSadrzaj(char * sadrzaj)
  101.     {
  102.         int vel = strlen(_sadrzaj) + 1;
  103.         _sadrzaj[vel];
  104.         strcat_s(_sadrzaj, vel + strlen(sadrzaj) + 1, sadrzaj);
  105.         if (strlen(sadrzaj) > 30)
  106.         {
  107.             _brojStranica += strlen(sadrzaj) / 30;
  108.         }
  109.     }
  110.     void Ispis() {
  111.         cout << crt << _naziv << " " << vrstaDokumentaTEXT[_vrsta] << " kreiran ";
  112.         _kreiran.Ispis();
  113.         cout << crt << _sadrzaj << crt << " br.stranica (" << _brojStranica << ")" << crt;
  114.     }
  115. };
  116. struct Printer {
  117.     char * _proizvodjac;
  118.     char * _model;
  119.     Dokument * _dokumenti;
  120.     int _trenutnoDokumenata;
  121.     Filter * _filteri;
  122.     int _trenutnoFiltera;
  123.  
  124.     void Unos(char * proizvodjac, char * model) {
  125.         int vel = strlen(proizvodjac) + 1;
  126.         _proizvodjac = new char[vel];
  127.         strcpy_s(_proizvodjac, vel, proizvodjac);
  128.         vel = strlen(model) + 1;
  129.         _model = new char[vel];
  130.         strcpy_s(_model, vel, model);
  131.         _trenutnoDokumenata = 0;
  132.         _trenutnoFiltera = 0;
  133.         _filteri = nullptr;
  134.         _dokumenti = nullptr;
  135.     }
  136.     void Dealociraj() {
  137.         delete[] _proizvodjac; _proizvodjac = nullptr;
  138.         delete[] _model; _model = nullptr;
  139.         for (size_t i = 0; i < _trenutnoDokumenata; i++)
  140.             _dokumenti[i].Dealociraj();
  141.         delete[]_dokumenti; _dokumenti = nullptr;
  142.         for (size_t i = 0; i < _trenutnoFiltera; i++)
  143.             _filteri[i].Dealociraj();
  144.         delete[]_filteri; _filteri = nullptr;
  145.     }
  146. };
  147.  
  148.  
  149. void main() {
  150.     DatumVrijeme prije3Dana; prije3Dana.Unos(3, 2, 2017, 10, 15);
  151.     DatumVrijeme danas1; danas1.Unos(6, 2, 2017, 10, 15);
  152.     DatumVrijeme danas2; danas2.Unos(6, 2, 2017, 10, 16);
  153.     DatumVrijeme za10Dana; za10Dana.Unos(16, 2, 2017, 10, 15);
  154.  
  155.    
  156.     Dokument ispitPRII, ispitMAT, ispitUIT, ispitUITDrugiRok;
  157.     ispitPRII.Unos(DOC, "ispitPRII.doc", prije3Dana);
  158.     ispitMAT.Unos(DOC, "ispitMAT.doc", danas1);
  159.     ispitUIT.Unos(DOC, "ispitUIT.doc", danas2);
  160.     ispitUITDrugiRok.Unos(PDF, "ispitUITDrugiRok.pdf", za10Dana);
  161.  
  162.    
  163.  
  164.     /*BROJ STRANICA DOKUMENTA SE AUTOMATSKI ODREĐUJE PRILIKOM DODAVANJA SADRŽAJA. ZA POTREBE ISPITA PRETPOSTAVLJAMO DA NA JEDNU
  165.     STRANICU MOŽE STATI 30 ZNAKOVA UKLJUČUJUĆI I RAZMAKE*/
  166.     ispitPRII.DodajSadrzaj("Programiranje ili računarsko programiranje (engl. programming) jeste vještina pomoću koje ");
  167.     ispitPRII.DodajSadrzaj("korisnik stvara i izvršava algoritme koristeći određene programske jezike da bi ... ");
  168.     cout << "Broj stranica -> " << ispitPRII._brojStranica << endl;
  169.  
  170.     ispitPRII.Ispis();//ISPISUJE SVE PODATKE O DOKUMENTU
  171.  
  172.     //ispitMAT.DodajSadrzaj("matematika se razvila iz potrebe da se obavljaju proračuni u trgovini, vrše mjerenja zemljišta i predviđaju ");
  173.     //ispitMAT.DodajSadrzaj("astronomski događaji, i ove tri primjene se mogu dovesti u vezu sa grubom podjelom matematike na RAT i ");
  174.  
  175.     //Printer hp3200; hp3200.Unos("HP", "3200");
  176.     ///*PRINTER NEĆE DOZVOLITI PRINTANJE DOKUMENATA U ČIJEM SADRŽAJU SE NALAZI NEKA OD ZABRANJENIH RIJEČI DEFINISANIH FILTERIMA*/
  177.     //if (hp3200.DodajFilter("RE", NIZAK)) //VISOK :)
  178.     //  cout << "Filter dodan!" << endl;
  179.     //if (hp3200.DodajFilter("RAT", VISOK))
  180.     //  cout << "Filter dodan!" << endl;
  181.     //if (hp3200.DodajFilter("UBITI", VISOK))
  182.     //  cout << "Filter dodan!" << endl;
  183.     //if (hp3200.DodajFilter("MRZITI", SREDNJI))
  184.     //  cout << "Filter dodan!" << endl;
  185.     //if (hp3200.DodajFilter("RE", SREDNJI))/* ONEMOGUĆITI PONAVLJANJE FILTERA, BEZ OBZIRA STO SU RAZLICITOG PRIORITETA*/
  186.     //  cout << "Filter dodan!" << endl;
  187.  
  188.     ///*
  189.     //DA BI PRINTER ISPRINTAO NEKI DOKUMENT MORAJU BITI ZADOVOLJENA SLJEDEĆA PRAVILA:
  190.     //1. NAZIV DOKUMENTA MOŽE SADRŽAVATI SAMO SLOVA, A EKSTENZIJA MOŽE BITI SAMO NEKA OD OZNAČENIH SA vrstaDokumenta
  191.     //2. SADRŽAJ DOKUMENTA U SEBI NE SMIJE POSJEDOVATI ZABRANJENE RIJEČ DEFINISANE FILTERIMA OSIM AKO SU ONE OZNAČENE SA NISKIM PRIORITETOM (PRIRITET NIZAK)
  192.  
  193.     //UKOLIKO NEKI OD NAVEDENIH USLOVA NIJE ZADOVOLJEN FUNKCIJA PRINTAJ DOKUMENT TREBA SAČUVATI U NIZ _dokumenti, ALI TAJ DOKUMENT NE TREBA PRINTATI.
  194.     //UKOLIKO DOKUMENT ISPUNJAVA SVE USLOVE ZA PRINTANJE POTREBNO JE NA KONZOLU ISPISATI SADRŽAJ DOKUMENTA KOJI SE PRINTA, A SA CRT LINIJOM ODVAJATI STRANICE DOKUMENTA
  195.     //*/
  196.     //hp3200.Printaj(ispitPRII);
  197.     //hp3200.Printaj(ispitMAT);
  198.     //hp3200.Printaj(ispitUIT);
  199.     //hp3200.Printaj(ispitUITDrugiRok);
  200.  
  201.     ////PROSJEČAN BROJ STRANICA = UKUPAN BROJ STRANICA / BROJ PRINTANIH DOKUMENATA
  202.     //cout << "Prosjecan broj printanih stranica je -> " << hp3200.GetProsjecanBrojStranicaPoDatumuIVrsti(prije3Dana, danas2, DOC) << crt;
  203.     ////VRAĆA FILTER KOJI SE NAJČEŠĆE KORISTIO U DOKUMENTIMA
  204.     //Filter * f = hp3200.GetNakoristenijiFilter();
  205.     //cout << "Najcesce koristeni sadrzaj filtera je -> " << f->_sadrzaj << crt;
  206.     ////PORED VRIJEDNOSTI SVIH OSTALIH ATRIBUTA, ISPISUJE SAMO ONE DOKUMENTE KOJI ZADOVOLJAVAJU SVA PRETHODNO DEFINISANA PRAVILA
  207.     //hp3200.Ispis();
  208.     ///*MIJENJA ZNAKOVE ZABRANJENOG SADRŽAJA DOKUMENTA SA POSLANIM KARAKTEROM
  209.     //(BEZ OBZIRA NA PRIORITET) I NAKON TOGA PRINTA SADRŽAJ DOKUMENATA; npr.
  210.     //UBITI POSTAJE -----.
  211.     //RIJEŠITI REKURZIJOM*/
  212.     //ZamijeniIPrintaj(hp3200, '-'); //OSTALE PARAMETRE DODAJTE PO POTREBI
  213.  
  214.     prije3Dana.Dealociraj(); danas1.Dealociraj(); danas2.Dealociraj(); za10Dana.Dealociraj();
  215.     ispitMAT.Dealociraj(); ispitPRII.Dealociraj(); ispitUIT.Dealociraj(); ispitUITDrugiRok.Dealociraj();
  216.  
  217.     //hp3200.Dealociraj();
  218.     system("PAUSE");
  219. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement