Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 1. BROJ I VRSTA PARAMETARA MORAJU BITI IDENTICNI KAO U PRIMJERIMA, U SUPROTNOM SE RAD NECE BODOVATI
- 2. STAVITE KOMENTAR NA DIJELOVE CODE-A KOJE NE BUDETE IMPLEMENTIRALI
- 3. KREIRAJTE .DOC FAJL SA VASIM BROJEM INDEKSA ( NPR. IB130030.DOC BEZ IMENA I PREZIMENA), TE NA KRAJU ISPITA U NJEGA KOPIRAJTE RJESENJA VASIH ZADATAKA. NE PREDAVATI .CPP FAJLOVE
- 4. TOKOM IZRADE ISPITA NIJE DOZVOLJENO KORISTENJE HELP-A
- 5. TOKOM IZRADE ISPITA MOGU BITI POKRENUTA SAMO TRI PROGRAMA: PDF READER (ISPITNI ZADACI), MS VISUAL STUDIO, MS WORD (U KOJI CETE KOPIRATI VASA RJESENJA)
- 6. BEZ OBZIRA NA TO DA LI SU ISPITNI ZADACI URADJENI, SVI STUDENTI KOJI SU PRISTUPILI ISPITU MORAJU PREDATI SVOJ RAD
- */
- #include<iostream>
- using namespace std;
- //narednu liniju code-a ignorisite, osim u slucaju da vam bude predstavljala smetnje u radu
- #pragma warning(disable:4996)
- const char *crt = "\n-------------------------------------------\n";
- enum vrstaDokumenta { PDF, DOC, TXT, HTML };
- const char * vrstaDokumentaChar[] = { "PDF", "DOC", "TXT", "HTML" };
- enum Prioritet { VISOK, SREDNJI, NIZAK };
- const char * PrioritetChar[] = { "VISOK", "SREDNJI", "NIZAK" };
- char * AlocirajNizKaraktera(const char * sadrzaj)
- {
- int vel = strlen(sadrzaj) + 1;
- char * temp = new char[vel];
- strcpy_s(temp, vel, sadrzaj);
- return temp;
- }
- const int BROJ_ZNAKOVA_PO_STRANICI = 30;
- struct DatumVrijeme
- {
- int *_dan, *_mjesec, *_godina, *_sati, *_minuti;
- void Unos(int dan = 1, int mjesec = 1, int godina = 2000, int sati = 1, int minuti = 1)
- {
- _dan = new int(dan);
- _mjesec = new int(mjesec);
- _godina = new int(godina);
- _sati = new int(sati);
- _minuti = new int(minuti);
- }
- void Dealociraj()
- {
- delete _dan; _dan = nullptr;
- delete _mjesec; _mjesec = nullptr;
- delete _godina; _godina = nullptr;
- delete _sati; _sati = nullptr;
- delete _minuti; _minuti = nullptr;
- }
- void Ispis()
- {
- cout << *_dan << "." << *_mjesec << "." << *_godina << " " << *_sati << ":" << *_minuti << endl;
- }
- };
- bool starijiDatum(DatumVrijeme d1, DatumVrijeme d2)
- {
- if (d1._godina > d2._godina)
- return false;
- else if (d2._godina > d1._godina)
- return true;
- if (d1._mjesec > d2._mjesec)
- return false;
- else if (d2._mjesec > d1._mjesec)
- return true;
- if (d1._dan > d2._dan)
- return false;
- else if (d2._dan > d1._dan)
- return true;
- if (d1._sati > d2._sati)
- return false;
- else if (d2._sati > d1._sati)
- return true;
- if (d1._minuti > d2._minuti)
- return false;
- else if (d2._minuti > d1._minuti)
- return true;
- return false;
- }
- bool istiDatum(DatumVrijeme d1, DatumVrijeme d2)
- {
- return (*d1._dan == *d2._dan && *d1._mjesec == *d2._mjesec&& *d1._godina == *d2._godina && *d1._minuti == *d2._minuti && *d1._sati == *d2._sati);
- }
- DatumVrijeme uvecajDatum(DatumVrijeme datum)//po referenci jer u rek mijenjamo datum
- {
- int nizDana[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
- if (*datum._mjesec < 12 && *datum._mjesec>0)
- if (nizDana[*datum._mjesec - 1] > *datum._dan)
- (*datum._dan)++;
- else
- {
- if (*datum._mjesec == 12)
- {
- *datum._godina++;
- *datum._mjesec = 1;
- *datum._dan = 1;
- }
- else
- {
- *datum._mjesec++;
- *datum._dan = 1;
- }
- }
- return datum;
- }
- bool veciDatum(DatumVrijeme d1, DatumVrijeme d2)
- {
- if (*d1._godina < *d2._godina)
- return true;
- else if (*d2._godina < *d1._godina)
- return false;
- if (*d1._mjesec < *d2._mjesec)
- return true;
- else if (*d2._mjesec < *d1._mjesec)
- return false;
- if (*d1._dan < *d2._dan)
- return true;
- else if (*d2._dan < *d1._dan)
- return false;
- if (*d1._sati < *d2._sati)
- return true;
- else if (*d2._sati < *d1._sati)
- return false;
- if (*d1._minuti < *d2._minuti)
- return true;
- else if (*d2._minuti < *d1._minuti)
- return false;
- return true;
- }
- struct Filter
- {
- char * _sadrzaj;
- Prioritet _prioritet;
- void Unos(const char * sadrzaj, Prioritet prioritet)
- {
- _sadrzaj = AlocirajNizKaraktera(sadrzaj);
- _prioritet = prioritet;
- }
- void Dealociraj()
- {
- delete[] _sadrzaj; _sadrzaj = nullptr;
- }
- void Ispis() { cout << _sadrzaj << " (" << PrioritetChar[_prioritet] << ")" << endl; }
- };
- struct Dokument
- {
- vrstaDokumenta _vrsta;
- char * _naziv;
- char * _sadrzaj;
- unique_ptr<DatumVrijeme> _kreiran;
- int _brojStranica;
- void Unos(vrstaDokumenta vrsta, const char * naziv, DatumVrijeme kreiran)
- {
- _naziv = AlocirajNizKaraktera(naziv);
- _vrsta = vrsta;
- _kreiran = make_unique <DatumVrijeme>(kreiran);
- _kreiran->Unos(*_kreiran->_dan, *_kreiran->_mjesec, *_kreiran->_godina, *_kreiran->_sati, *_kreiran->_minuti);
- _brojStranica = 0;//broj stranica se odredjuje prilikom svakog dodavanja novog sadrzaja dokumentu
- _sadrzaj = nullptr;
- }
- void Dealociraj()
- {
- delete[] _naziv; _naziv = nullptr;
- delete[] _sadrzaj; _sadrzaj = nullptr;
- _kreiran->Dealociraj();
- _kreiran.reset();
- }
- //ISPISUJE SVE PODATKE O DOKUMENTU
- void Ispis()
- {
- cout << crt << "Naziv dokumenta: " << _naziv << " " << "Vrsta dokumenta: " << vrstaDokumentaChar[_vrsta] << " kreiran ";
- _kreiran->Ispis();
- if (_sadrzaj != nullptr)
- {
- cout << crt << "Sadrzaj dokumenta: " << _sadrzaj << crt << " br.stranica (" << _brojStranica << ")" << crt;
- }
- }
- /*BROJ STRANICA DOKUMENTA SE AUTOMATSKI ODREDJUJE PRILIKOM DODAVANJA SADRZAJA. ZA POTREBE ISPITA PRETPOSTAVLJAMO DA NA JEDNU
- STRANICU MOZE STATI BROJ_ZNAKOVA_PO_STRANICI ZNAKOVA UKLJUCUJUCI RAZMAKE I DRUGE VRSTE ZNAKOVA*/
- void DodajSadrzaj(const char * sadrzaj)
- {
- if (_sadrzaj == nullptr)
- {
- int size = strlen(sadrzaj) + 1;
- _sadrzaj = new char[size];
- strcpy_s(_sadrzaj, size, sadrzaj);
- }
- else
- {
- int size1 = strlen(sadrzaj) + strlen(_sadrzaj) + 1;
- char * temp = new char[size1];
- int size2 = strlen(_sadrzaj) + 1;
- strcpy_s(temp, size2, _sadrzaj);
- delete[] _sadrzaj; _sadrzaj = nullptr;
- strcat_s(temp, size1, sadrzaj);
- _sadrzaj = temp;
- }
- _brojStranica = strlen(_sadrzaj) / BROJ_ZNAKOVA_PO_STRANICI;
- cout << "Broj stranica: " << _brojStranica << endl;
- cout << "Sadrzaj: " << _sadrzaj << endl;
- }
- };
- struct Printer
- {
- char * _model;
- Dokument * _dokumenti;
- int _trenutnoDokumenata;
- Filter * _filteri;
- int _trenutnoFiltera;
- bool dodajDokument(Dokument & dokument)
- {
- Dokument *temp = new Dokument[_trenutnoDokumenata + 1];
- for (int i = 0; i < _trenutnoDokumenata; i++)
- {
- temp[i].Unos(_dokumenti[i]._vrsta, _dokumenti[i]._naziv, *_dokumenti[i]._kreiran);
- if (_dokumenti[i]._sadrzaj != nullptr)
- temp[i].DodajSadrzaj(_dokumenti[i]._sadrzaj);
- temp[i]._brojStranica = _dokumenti[i]._brojStranica;
- }
- temp[_trenutnoDokumenata].Unos(dokument._vrsta, dokument._naziv, *dokument._kreiran);
- if (dokument._sadrzaj != nullptr)
- temp[_trenutnoDokumenata].DodajSadrzaj(dokument._sadrzaj);
- temp[_trenutnoDokumenata]._brojStranica = dokument._brojStranica;
- for (int i = 0; i < _trenutnoDokumenata; i++)
- {
- _dokumenti[i].Dealociraj();
- }
- delete[] _dokumenti;
- _dokumenti = temp;
- _trenutnoDokumenata++;
- return true;
- }
- void Unos(const char * model)
- {
- _model = AlocirajNizKaraktera(model);
- _filteri = nullptr;
- _dokumenti = nullptr;
- _trenutnoDokumenata = 0;
- _trenutnoFiltera = 0;
- }
- void Dealociraj() {
- delete[] _model; _model = nullptr;
- for (size_t i = 0; i < _trenutnoDokumenata; i++)
- _dokumenti[i].Dealociraj();
- delete[]_dokumenti; _dokumenti = nullptr;
- for (size_t i = 0; i < _trenutnoFiltera; i++)
- _filteri[i].Dealociraj();
- delete[]_filteri; _filteri = nullptr;
- }
- void Ispis() {
- cout << _model << crt;
- for (size_t i = 0; i < _trenutnoDokumenata; i++)
- _dokumenti[i].Ispis();
- }
- /*PRINTER NECE DOZVOLITI PRINTANJE DOKUMENATA U CIJEM SADRZAJU SE NALAZI NEKA OD ZABRANJENIH RIJECI DEFINISANIH FILTERIMA*/
- //VISOK
- /* ONEMOGUCITI PONAVLJANJE FILTERA, BEZ OBZIRA STO SU RAZLICITOG PRIORITETA*/
- bool DodajFilter(const char * filter, Prioritet prioritet)
- {
- for (int i = 0; i < _trenutnoFiltera; i++)
- {
- if (strcmp(_filteri[i]._sadrzaj, filter) == 0)
- {
- cout << "Filter vec dodan! -> ";
- return false;
- }
- }
- Filter * temp = new Filter[_trenutnoFiltera + 1];
- for (int i = 0; i < _trenutnoFiltera; i++)
- {
- temp[i].Unos(_filteri[i]._sadrzaj, _filteri[i]._prioritet);
- }
- temp[_trenutnoFiltera].Unos(filter, prioritet);
- for (int i = 0; i < _trenutnoFiltera; i++)
- {
- _filteri[i].Dealociraj();
- }
- delete[] _filteri;
- _filteri = temp;
- _trenutnoFiltera++;
- cout << "Dodan: " << _trenutnoFiltera << "-> ";
- return true;
- }
- /*
- DA BI PRINTER ISPRINTAO NEKI DOKUMENT MORAJU BITI ZADOVOLJENA SLJEDECA PRAVILA:
- 1. NAZIV DOKUMENTA MOZE SADRZAVATI SAMO SLOVA, A EKSTENZIJA MOZE BITI IDENTICNA ONOJ DEFINISANOJ VRIJEDNOSCU ATRIBUTA vrstaDokumenta
- 2. SADRZAJ DOKUMENTA MOZE POSJEDOVATI RIJECI DEFINISANE FILTERIMA, ALI PREMA SLJEDECIM PRAVILIMA:
- - NITI JEDNU RIJEC OZNACENU FILTEROM PRIORITETA VISOK
- - NAJVISE 2 RIJECI OZNACENE FILTEROM PRIORITETA SREDNJI
- - NAJVISE 3 RIJECI OZNACENE FILTEROM PRIORITETA NIZAK
- UKOLIKO NEKI OD NAVEDENIH USLOVA NIJE ZADOVOLJEN FUNKCIJA PRINTAJ DOKUMENT TREBA SACUVATI U NIZ _dokumenti,
- ALI TAJ DOKUMENT NE TREBA PRINTATI I FUNKCIJA VRACA FALSE.
- UKOLIKO DOKUMENT ISPUNJAVA SVE USLOVE ZA PRINTANJE POTREBNO JE NA KONZOLU ISPISATI SADRZAJ DOKUMENTA KOJI SE PRINTA, A SA CRT LINIJOM
- ODVAJATI STRANICE DOKUMENTA
- */
- bool Printaj(Dokument & dokument)
- {
- int size = strlen(dokument._naziv) + 1;
- for (int j = 0; j < size; j++)
- {//kada dodje do tacke prekida dalje strazenje slova u nazivu
- if (dokument._naziv[j] == '.')
- break;
- //posto imamo ! znaci da nam se u uslovu ne radi o slovu i zato vracamo false
- if (!((dokument._naziv[j] >= 'a' && dokument._naziv[j] <= 'z') || (dokument._naziv[j] >= 'A' &&dokument._naziv[j] <= 'Z')))
- {
- dodajDokument(dokument);
- return false;
- }
- }
- if (!(dokument._vrsta == PDF || dokument._vrsta == DOC || dokument._vrsta == HTML || dokument._vrsta == TXT))
- {
- dodajDokument(dokument);
- return false;
- }
- int brojacSrednji = 0, brojacVisok = 0, brojacNizak = 0;
- for (int j = 0; j < _trenutnoFiltera; j++)
- {
- if (dokument._sadrzaj != nullptr && _filteri[j]._sadrzaj != nullptr)
- {
- if (strstr(dokument._sadrzaj, _filteri[j]._sadrzaj) != nullptr)
- {
- if (_filteri[j]._prioritet == VISOK)//0
- brojacVisok++;
- if (_filteri[j]._prioritet == SREDNJI)//2
- brojacSrednji++;
- if (_filteri[j]._prioritet == NIZAK)//3
- brojacNizak++;
- }
- }
- }
- if (brojacVisok > 0)
- {
- dodajDokument(dokument);
- return false;
- }
- if (brojacSrednji > 2)
- {
- dodajDokument(dokument);
- return false;
- }
- if (brojacNizak > 3)
- {
- dodajDokument(dokument);
- return false;
- }
- if (dokument._sadrzaj != nullptr)
- {
- int size1 = strlen(dokument._sadrzaj) + 1;
- for (int i = 0; i < size1; i++)
- {
- cout << dokument._sadrzaj[i];
- if (i%BROJ_ZNAKOVA_PO_STRANICI == 0 && i != 0)
- cout << crt;
- }
- }
- dodajDokument(dokument);
- return true;
- }
- //PROSJECAN BROJ STRANICA = UKUPAN BROJ STRANICA / BROJ PRINTANIH DOKUMENATA
- //REKURZIVNA FUNKCIJA VRACA PROSJECAN BROJ ISPRINTANIH STRANICA (KOJE SU ZADOVOLJILE POSTAVLJENE FILTERE) U PERIODU OD (npr.prije3Dana) -
- //DO (npr.danas2), UKLJUCUJUCI I TAJ PERIOD
- float GetProsjecanBrojStranicaUPeriodu_Od_Do(/**/DatumVrijeme OD, DatumVrijeme DO, int & suma, int & brojac, int & i)
- {
- float prosjek;
- if (_trenutnoFiltera == i)
- {
- if (brojac == 0)
- return 0;
- else
- {
- prosjek = float(suma) / brojac;
- return prosjek;
- }
- }
- else
- {
- if (veciDatum(OD, *_dokumenti[i]._kreiran) && veciDatum(*_dokumenti[i]._kreiran, DO))
- {
- cout << "ispis rekurzije... " << endl;
- int brojacSrednji = 0, brojacVisok = 0, brojacNizak = 0;
- for (int j = 0; j < _trenutnoFiltera; j++)
- {
- if (_dokumenti[i]._sadrzaj != nullptr && _filteri[j]._sadrzaj != nullptr)
- {
- if (strstr(_dokumenti[i]._sadrzaj, _filteri[j]._sadrzaj) != nullptr)
- {
- if (_filteri[j]._prioritet == VISOK)//0
- brojacVisok++;
- if (_filteri[j]._prioritet == SREDNJI)//2
- brojacSrednji++;
- if (_filteri[j]._prioritet == NIZAK)//3
- brojacNizak++;
- }
- }
- }
- if ((brojacVisok <= 0) && (brojacSrednji <= 2) && (brojacNizak <= 3))
- {
- cout<< _dokumenti[i]._brojStranica;
- brojac++;
- suma += _dokumenti[i]._brojStranica;
- }
- }
- }
- i++;
- return GetProsjecanBrojStranicaUPeriodu_Od_Do(OD, DO, suma, brojac, i);
- }
- //VRACA SADRZAJ FILTERA KOJI SE NAJCESCE KORISTIO U DOKUMENTIMA
- Filter * GetNakoristenijiFilter()
- {
- Filter * f = nullptr;
- return f;
- }
- };
- int main() {
- DatumVrijeme prije3Dana; prije3Dana.Unos(3, 2, 2018, 10, 15);
- DatumVrijeme danas1; danas1.Unos(6, 2, 2018, 10, 15);
- DatumVrijeme danas2; danas2.Unos(6, 2, 2018, 10, 16);
- DatumVrijeme za10Dana; za10Dana.Unos(16, 2, 2018, 10, 15);
- /*cout<<starijiDatum(prije3Dana, danas1);
- cout << istiDatum(prije3Dana, danas1);
- uvecajDatum(prije3Dana);
- prije3Dana.Ispis();*/
- Dokument ispitPRII, ispitMAT, ispitUIT, ispitUITDrugiRok;
- ispitPRII.Unos(DOC, "ispitPRII.doc", prije3Dana);
- ispitMAT.Unos(DOC, "ispitMAT.doc", danas1);
- ispitUIT.Unos(DOC, "ispitUIT.doc", danas2);
- ispitUITDrugiRok.Unos(PDF, "ispitUITDrugiRok.pdf", za10Dana);
- /*BROJ STRANICA DOKUMENTA SE AUTOMATSKI ODREDJUJE PRILIKOM DODAVANJA SADRZAJA. ZA POTREBE ISPITA PRETPOSTAVLJAMO DA NA JEDNU
- STRANICU MOZE STATI BROJ_ZNAKOVA_PO_STRANICI ZNAKOVA UKLJUCUJUCI RAZMAKE I DRUGE VRSTE ZNAKOVA*/
- ispitPRII.DodajSadrzaj("Programiranje ili racunarsko programiranje (engl. programming) jeste vjestina pomocu koje ");
- ispitPRII.DodajSadrzaj("korisnik stvara i izvrsava algoritme koristeci odredjene programske jezike da bi ... ");
- cout << "Broj stranica -> " << ispitPRII._brojStranica << endl;
- ispitPRII.Ispis();//ISPISUJE SVE PODATKE O DOKUMENTU
- ispitMAT.DodajSadrzaj("Matematika se razvila iz potrebe da se obavljaju proracuni u trgovini, vrse mjerenja zemljista i predvidjaju ");
- ispitMAT.DodajSadrzaj("astronomski dogadjaji, i ove tri primjene se mogu dovesti u vezu sa grubom podjelom matematike ");
- Printer hp3200; hp3200.Unos("HP 3200");
- /*PRINTER NECE DOZVOLITI PRINTANJE DOKUMENATA U CIJEM SADRZAJU SE NALAZI NEKA OD ZABRANJENIH RIJECI DEFINISANIH FILTERIMA*/
- if (hp3200.DodajFilter("RE", NIZAK)) //VISOK :)
- cout << "Filter dodan!" << endl;
- if (hp3200.DodajFilter("RAT", VISOK))
- cout << "Filter dodan!" << endl;
- if (hp3200.DodajFilter("UBITI", VISOK))
- cout << "Filter dodan!" << endl;
- if (hp3200.DodajFilter("MRZITI", SREDNJI))
- cout << "Filter dodan!" << endl;
- if (!hp3200.DodajFilter("RE", SREDNJI))/* ONEMOGUCITI PONAVLJANJE FILTERA, BEZ OBZIRA STO SU RAZLICITOG PRIORITETA*/
- cout << "Filter nije dodan!" << endl;
- /*
- DA BI PRINTER ISPRINTAO NEKI DOKUMENT MORAJU BITI ZADOVOLJENA SLJEDECA PRAVILA:
- 1. NAZIV DOKUMENTA MOZE SADRZAVATI SAMO SLOVA, A EKSTENZIJA MOZE BITI IDENTICNA ONOJ DEFINISANOJ VRIJEDNOSCU ATRIBUTA vrstaDokumenta
- 2. SADRZAJ DOKUMENTA MOZE POSJEDOVATI RIJECI DEFINISANE FILTERIMA, ALI PREMA SLJEDECIM PRAVILIMA:
- - NITI JEDNU RIJEC OZNACENU FILTEROM PRIORITETA VISOK
- - NAJVISE 2 RIJECI OZNACENE FILTEROM PRIORITETA SREDNJI
- - NAJVISE 3 RIJECI OZNACENE FILTEROM PRIORITETA NIZAK
- UKOLIKO NEKI OD NAVEDENIH USLOVA NIJE ZADOVOLJEN FUNKCIJA PRINTAJ DOKUMENT TREBA SACUVATI U NIZ _dokumenti, ALI TAJ DOKUMENT NE TREBA PRINTATI I FUNKCIJA VRACA FALSE.
- UKOLIKO DOKUMENT ISPUNJAVA SVE USLOVE ZA PRINTANJE POTREBNO JE NA KONZOLU ISPISATI SADRZAJ DOKUMENTA KOJI SE PRINTA, A SA CRT LINIJOM ODVAJATI STRANICE DOKUMENTA
- */
- if (hp3200.Printaj(ispitPRII))
- cout << "Printam -> " << ispitPRII._naziv << endl;
- if (hp3200.Printaj(ispitMAT))
- cout << "Printam -> " << ispitMAT._naziv << endl;
- if (hp3200.Printaj(ispitUIT))
- cout << "Printam -> " << ispitUIT._naziv << endl;
- if (hp3200.Printaj(ispitUITDrugiRok))
- cout << "Printam -> " << ispitUITDrugiRok._naziv << endl;
- //PROSJECAN BROJ STRANICA = UKUPAN BROJ STRANICA / BROJ PRINTANIH DOKUMENATA
- //REKURZIVNA FUNKCIJA VRACA PROSJECAN BROJ ISPRINTANIH STRANICA (KOJE SU ZADOVOLJILE POSTAVLJENE FILTERE) U PERIODU OD (npr.prije3Dana) -
- //DO (npr.danas2), UKLJUCUJUCI I TAJ PERIOD
- int brojac = 0, suma = 0, i = 0;
- cout << "Prosjecan broj printanih stranica je -> " << hp3200.GetProsjecanBrojStranicaUPeriodu_Od_Do(/**/danas1, danas2, suma, brojac, i) << crt;
- //VRACA SADRZAJ FILTERA KOJI SE NAJCESCE KORISTIO U DOKUMENTIMA
- Filter * f = hp3200.GetNakoristenijiFilter();
- if (f != nullptr && f->_sadrzaj != nullptr)
- cout << "Najcesce koristeni sadrzaj filtera je -> " << f->_sadrzaj << crt;
- //PORED VRIJEDNOSTI SVIH OSTALIH ATRIBUTA, ISPISUJE SAMO ONE DOKUMENTE KOJI ZADOVOLJAVAJU SVA PRETHODNO DEFINISANA PRAVILA
- hp3200.Ispis();
- /*NAPISATI LAMBDA FUNKCIJU ZamijeniIPrintaj KOJA U SADRZAJU DOKUMENTA MIJENJA PRVI POSLATI PARAMETAR SA VRIJEDNOSCU DRUGOG PARAMETRA,
- TE VRACA BROJ ZAMIJENJENIH ZNAKOVA*/
- auto ZamijeniIPrintaj = [&](const char znak, const char znak1, DatumVrijeme datum)
- {
- int brojac = 0;
- for (int i = 0; i < hp3200._trenutnoDokumenata; i++)
- {
- int size = 0;
- if (hp3200._dokumenti[i]._sadrzaj != nullptr)
- size = strlen(hp3200._dokumenti[i]._sadrzaj) + 1;
- if (istiDatum(*hp3200._dokumenti[i]._kreiran, datum))
- {
- for (int j = 0; j < size; j++)
- {
- if (hp3200._dokumenti[i]._sadrzaj[j] == znak)
- {
- hp3200._dokumenti[i]._sadrzaj[j] = znak1;//dodjela
- brojac++;
- }
- }
- }
- }
- return brojac;
- } /**/;
- //RAZMAK MIJENJA ZNAKOM CRTICA U SADRZAJU DOKUMENATA KOJI SU PRINTANI danas1
- cout << "zamjena ";
- hp3200.Ispis();
- DatumVrijeme noviDatum; noviDatum.Unos(6, 2, 2018, 10, 15);
- int zamijenjeno = ZamijeniIPrintaj(' ', '-', danas1);
- cout << "Zamijenjeno -> " << zamijenjeno << " znakova" << endl;
- hp3200.Ispis();
- prije3Dana.Dealociraj(); danas1.Dealociraj(); danas2.Dealociraj(); za10Dana.Dealociraj();
- ispitMAT.Dealociraj(); ispitPRII.Dealociraj(); ispitUIT.Dealociraj(); ispitUITDrugiRok.Dealociraj();
- noviDatum.Dealociraj();
- hp3200.Dealociraj();
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement