Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- #include<vector>
- #include<iterator>
- #include<regex>
- #include<mutex>
- #include<thread>
- #include<sstream>
- #include<exception>
- using namespace std;
- char *crt = "\n-----------------------------------------------\n";
- mutex cuvarResursa;
- enum Status { ZAHTJEV_ZAPRIMLJEN, ODUSTAO, ODBIJENA, IZDATA, ISTEKLA, PONISTENA };
- char* ispisStatus[] = { "ZAHTJEV_ZAPRIMLJEN","ODUSTAO","ODBIJENA","IZDATA","ISTEKLA","PONISTENA" };
- enum Sortiranje { RASTUCI, OPADAJUCI };
- char* ispisSortiranje[] = { "RASTUCI","OPADAJUCI" };
- enum Drzava { SAD, AUSTRALIJA, ENGLESKA };
- char* ispisDrzava[] = { "SAD","AUSTRALIJA","ENGLESKA" };
- class Datum {
- int *_dan, *_mjesec, *_godina;
- public:
- Datum(int dan = 1, int mjesec = 1, int godina = 2000) {
- _dan = new int(dan);
- _mjesec = new int(mjesec);
- _godina = new int(godina);
- }
- Datum(const Datum& obj) {
- _dan = new int(*obj._dan);
- _mjesec = new int(*obj._mjesec);
- _godina = new int(*obj._godina);
- }
- Datum& operator=(const Datum& obj) {
- if (this != &obj) {
- delete _dan;
- delete _mjesec;
- delete _godina;
- _dan = new int(*obj._dan);
- _mjesec = new int(*obj._mjesec);
- _godina = new int(*obj._godina);
- }
- return *this;
- }
- ~Datum() {
- delete _dan; _dan = nullptr;
- delete _mjesec; _mjesec = nullptr;
- delete _godina; _godina = nullptr;
- }
- friend ostream& operator<< (ostream &COUT, Datum &obj) {
- COUT << *obj._dan << "." << *obj._mjesec << "." << *obj._godina;
- return COUT;
- }
- Datum operator++() {
- (*_dan)++;
- return *this;
- }
- bool operator==(Datum& obj) {
- if (*_dan == *obj._dan && *_mjesec == *obj._mjesec && *_godina == *obj._godina)
- return true;
- return false;
- }
- int GetGodina() { return *_godina; }
- int ToDays() {
- return *_godina * 365 + *_mjesec * 30 + *_dan;
- }
- };
- template<class T1, class T2, int max>
- class FITKolekcija {
- T1 * _elementi1[max];
- T2 * _elementi2[max];
- int _trenutno;
- public:
- FITKolekcija() {
- for (size_t i = 0; i < max; i++) {
- _elementi1[i] = nullptr;
- _elementi2[i] = nullptr;
- }
- _trenutno = 0;
- }
- FITKolekcija(const FITKolekcija& obj) {
- for (int i = 0; i < max; i++) {
- _elementi1[i] = nullptr;
- _elementi2[i] = nullptr;
- }
- _trenutno = obj._trenutno;
- for (int i = 0; i < obj._trenutno; i++) {
- _elementi1[i] = new T1(*obj._elementi1[i]);
- _elementi2[i] = new T2(*obj._elementi2[i]);
- }
- }
- FITKolekcija& operator=(const FITKolekcija& obj) {
- if (this != &obj) {
- for (int i = 0; i < _trenutno; i++) {
- delete _elementi1[i];
- delete _elementi2[i];
- }
- _trenutno = obj._trenutno;
- for (int i = 0; i < obj._trenutno; i++) {
- _elementi1[i] = new T1(*obj._elementi1[i]);
- _elementi2[i] = new T2(*obj._elementi2[i]);
- }
- }
- return *this;
- }
- ~FITKolekcija() {
- for (size_t i = 0; i < max; i++) {
- delete _elementi1[i]; _elementi1[i] = nullptr;
- delete _elementi2[i]; _elementi2[i] = nullptr;
- }
- }
- T1 * GetT1(int lokacija) { return _elementi1[lokacija]; }
- T2 * GetT2(int lokacija) { return _elementi2[lokacija]; }
- int GetTrenutno() { return _trenutno; }
- void Dodaj(T1 e1, T2 e2) {
- if (_trenutno >= max)
- throw exception("Nije moguce dodati novi elementi.");
- _elementi1[_trenutno] = new T1(e1);
- _elementi2[_trenutno] = new T2(e2);
- _trenutno++;
- cout << "Elementi dodani." << endl;
- }
- friend ostream& operator<< (ostream &COUT, FITKolekcija &obj) {
- for (size_t i = 0; i < obj._trenutno; i++)
- COUT << *obj._elementi1[i] << " " << *obj._elementi2[i] << endl;
- return COUT;
- }
- void Sortiraj(Sortiranje s) {
- T1* temp1 = new T1;
- T2* temp2 = new T2;
- int j = 0;
- bool swapped =true;
- if (s == RASTUCI) {
- while(swapped){
- swapped =false;
- j++;
- for (int i = 0; i < _trenutno-j; i++) {
- if (_elementi1[i] < _elementi1[i + 1]) {
- temp1 = _elementi1[i + 1];
- temp2 = _elementi2[i + 1];
- _elementi1[i + 1] = _elementi1[i];
- _elementi2[i + 1] = _elementi2[i];
- _elementi1[i] = temp1;
- _elementi2[i] = temp2;
- swapped = true;
- }
- }
- }
- }
- else if(s==OPADAJUCI){
- while (swapped)
- {
- swapped = false;
- j++;
- for (int i = 0; i < _trenutno - j; i++) {
- if (_elementi1[i + 1] < _elementi1[i]) {
- temp1 =_elementi1[i + 1];
- temp2 =_elementi2[i + 1];
- _elementi1[i + 1] = _elementi1[i];
- _elementi2[i + 1] = _elementi2[i];
- _elementi1[i] = temp1;
- _elementi2[i] = temp2;
- swapped = true;
- }
- }
- }
- }
- cout << "Sortirano." << endl;
- }
- };
- void Print(Drzava d, Datum vazenjeOD, Datum vazenjeDO, char* nap, FITKolekcija<Status, string, 10>status) {
- lock_guard<mutex>locker(cuvarResursa);
- cout << d << " " << vazenjeOD << " " << vazenjeDO << " " << status << endl;
- if (nap != nullptr)
- cout << nap << endl;
- else
- cout << "---" << endl;
- this_thread::sleep_for(chrono::seconds(2));
- }
- class Viza {
- protected:
- Drzava _drzava;
- Datum _vazenjeOD;
- Datum _vazenjeDO;
- char * _napomena;
- // string se odnosi na razlog promjene statusa, a moguće je samo 10 izmjena statusa
- FITKolekcija<Status, string, 10> _statusi;
- public:
- Viza(Drzava drzava, Datum _OD, Datum _DO, char * napomena = nullptr) :_vazenjeDO(_DO), _vazenjeOD(_OD)
- {
- if (napomena != nullptr) {
- _napomena = new char[strlen(napomena) + 1];
- strcpy_s(_napomena, strlen(napomena) + 1, napomena);
- }
- else
- _napomena = nullptr;
- _drzava = drzava;
- }
- Viza(const Viza& obj) {
- _drzava = obj._drzava;
- _vazenjeOD = obj._vazenjeOD;
- _vazenjeDO = obj._vazenjeDO;
- if (obj._napomena != nullptr) {
- int size = strlen(obj._napomena) + 1;
- _napomena = new char[size];
- strcpy_s(_napomena, size, obj._napomena);
- }
- else {
- _napomena = nullptr;
- }
- _statusi = obj._statusi;
- }
- Viza& operator=(const Viza& obj) {
- if (this != &obj) {
- if (_napomena != nullptr) {
- delete[] _napomena;
- }
- _drzava = obj._drzava;
- _vazenjeOD = obj._vazenjeOD;
- _vazenjeDO = obj._vazenjeDO;
- if (obj._napomena != nullptr) {
- int size = strlen(obj._napomena) + 1;
- _napomena = new char[size];
- strcpy_s(_napomena, size, obj._napomena);
- }
- else {
- _napomena = nullptr;
- }
- _statusi = obj._statusi;
- }
- }
- ~Viza() { delete[] _napomena; _napomena = nullptr; }
- Datum GetVazenjeOD() { return _vazenjeOD; }
- Datum GetVazenjeDO() { return _vazenjeDO; }
- char * GetNapomena() { return _napomena; }
- void SetNapomena(string n) {
- if(_napomena!=nullptr)
- delete[] _napomena;
- int size = n.size() + 1;
- _napomena = new char[size];
- strcpy_s(_napomena, size, n.c_str());
- }
- FITKolekcija<Status, string, 10> & GetStatuse() { return _statusi; }
- virtual void Info() = 0;
- friend ostream& operator<<(ostream&, Viza&);
- Drzava GetDrzava() { return _drzava; }
- bool operator==(Viza& obj) {
- if (_drzava == obj.GetDrzava() && _vazenjeOD == obj._vazenjeOD && _vazenjeDO == obj._vazenjeDO)
- return true;
- return false;
- }
- };
- ostream& operator<<(ostream& Cout, Viza& obj) {
- Cout << "Drzava: " << ispisDrzava[obj._drzava] << endl;
- Cout << "Datum vazenja OD: " << obj._vazenjeOD << endl;
- Cout << "Datum vazenja DO: " << obj._vazenjeDO << endl;
- if (obj._napomena != nullptr) {
- Cout << "Napomena: " << obj._napomena << endl;
- }
- else {
- Cout << "No napomena." << endl;
- }
- return Cout;
- }
- class PoslovnaViza :public Viza {
- string _kompanija; //naziv kompanije koja potvrđuje da posluje sa aplikantom
- public:
- PoslovnaViza(Drzava drzava, Datum _OD, Datum _DO, string kompanija, char * napomena = nullptr) : Viza(drzava, _OD, _DO, napomena) {
- _kompanija = kompanija;
- }
- PoslovnaViza(const PoslovnaViza& obj):Viza(obj) {
- _kompanija = obj._kompanija;
- }
- PoslovnaViza& operator=(const PoslovnaViza& obj) {
- if (this != &obj) {
- Viza::operator=(obj);
- _kompanija = obj._kompanija;
- }
- return *this;
- }
- friend ostream & operator << (ostream & COUT, PoslovnaViza & obj) {
- COUT << obj._drzava << " " << obj._vazenjeOD << " " << obj._vazenjeDO << " " << obj._kompanija << endl;
- COUT << ((obj._napomena != nullptr) ? obj._napomena : "") << endl;
- COUT << "STATUSI -> " << obj._statusi << endl;
- return COUT;
- }
- void Info() {
- cout << "Info poslovna viza." << endl;
- }
- };
- class TuristickaViza : public Viza {
- string _adresa; //adresa hotele ili drugog smještaja na kojoj će aplikant boraviti
- public:
- TuristickaViza(Drzava drzava, Datum _OD, Datum _DO, string adresa, char * napomena = nullptr) : Viza(drzava, _OD, _DO, napomena) {
- _adresa = adresa;
- }
- TuristickaViza(const TuristickaViza& obj) :Viza(obj) {
- _adresa = obj._adresa;
- }
- TuristickaViza& operator=(const TuristickaViza& obj) {
- if (this != &obj) {
- Viza::operator=(obj);
- _adresa = obj._adresa;
- }
- return *this;
- }
- friend ostream & operator << (ostream & COUT, TuristickaViza & obj) {
- COUT << obj._drzava << " " << obj._vazenjeOD << " " << obj._vazenjeDO << " " << obj._adresa << endl;
- COUT << ((obj._napomena != nullptr) ? obj._napomena : "") << endl;
- COUT << "STATUSI -> " << obj._statusi << endl;
- return COUT;
- }
- void Info() {
- cout << "Info turisticka viza." << endl;
- }
- };
- class Aplikant {
- char * _imePrezime;
- Datum * _datumRodjenja;
- char * _brojPasosa;
- vector<Viza *> _vize;
- public:
- Aplikant(char * imePrezime, Datum datumRodjenja, char * brPasosa) {
- int vel = strlen(imePrezime) + 1;
- _imePrezime = new char[vel];
- strcpy_s(_imePrezime, vel, imePrezime);
- vel = strlen(brPasosa) + 1;
- _brojPasosa = new char[vel];
- strcpy_s(_brojPasosa, vel, brPasosa);
- _datumRodjenja = new Datum(datumRodjenja);
- }
- Aplikant(const Aplikant& obj) {
- int size = strlen(obj._imePrezime) + 1;
- _imePrezime = new char[size];
- strcpy_s(_imePrezime, size, obj._imePrezime);
- _datumRodjenja = new Datum(*obj._datumRodjenja);
- size = strlen(obj._brojPasosa) + 1;
- _brojPasosa = new char[size];
- strcpy_s(_brojPasosa, size, obj._brojPasosa);
- for (int i = 0; i < obj._vize.size(); i++) {
- PoslovnaViza* poslovna = dynamic_cast<PoslovnaViza*>(obj._vize[i]);
- if (poslovna != nullptr) {
- _vize.push_back(new PoslovnaViza(*poslovna));
- }
- else {
- TuristickaViza* turisticka = dynamic_cast<TuristickaViza*>(obj._vize[i]);
- if (turisticka != nullptr) {
- _vize.push_back(new TuristickaViza(*turisticka));
- }
- }
- }
- }
- Aplikant& operator=(const Aplikant& obj) {
- if (this != &obj) {
- delete[] _imePrezime;
- delete _datumRodjenja;
- delete[] _brojPasosa;
- for (int i = 0; i < _vize.size(); i++) {
- delete _vize[i];
- }
- _vize.clear();
- int size = strlen(obj._imePrezime) + 1;
- _imePrezime = new char[size];
- strcpy_s(_imePrezime, size, obj._imePrezime);
- _datumRodjenja = new Datum(*obj._datumRodjenja);
- size = strlen(obj._brojPasosa) + 1;
- _brojPasosa = new char[size];
- strcpy_s(_brojPasosa, size, obj._brojPasosa);
- for (int i = 0; i < obj._vize.size(); i++) {
- PoslovnaViza* poslovna = dynamic_cast<PoslovnaViza*>(obj._vize[i]);
- if (poslovna != nullptr) {
- _vize.push_back(new PoslovnaViza(*poslovna));
- }
- else {
- TuristickaViza* turisticka = dynamic_cast<TuristickaViza*>(obj._vize[i]);
- if (turisticka != nullptr) {
- _vize.push_back(new TuristickaViza(*turisticka));
- }
- }
- }
- }
- return *this;
- }
- ~Aplikant() {
- delete[]_imePrezime; _imePrezime = nullptr;
- delete[]_brojPasosa; _brojPasosa = nullptr;
- delete _datumRodjenja; _datumRodjenja = nullptr;
- for (size_t i = 0; i < _vize.size(); i++)
- {
- delete _vize[i]; _vize[i] = nullptr;
- }
- }
- friend ostream & operator << (ostream & COUT, Aplikant & obj) {
- COUT << obj._imePrezime << " " << *obj._datumRodjenja << " " << obj._brojPasosa << endl;
- COUT << "VIZE -> " << endl;
- for (size_t i = 0; i < obj._vize.size(); i++)
- COUT << *obj._vize[i] << endl;
- return COUT;
- }
- vector<Viza * > GetVize() { return _vize; }
- bool DodajVizu(Viza* v) {
- /*
- NOVA VIZA SE NE MOŽE DODATI UKOLIKO:
- - JE APLIKANT MLAĐI OD 10 GODINA
- - U TOM PERIODU (ODNOSI SE NA PERIOD VIZE OD - DO) NE POSTOJI VAŽEĆA (POJAM VAŽEĆA PODRAZUMIJEVA DA JE POSLJEDNJI STATUS VIZE BIO IZDATA TJ.
- DA VIZA NIJE PONIŠTENA ILI ISTEKLA) VIZA ZA TU DRŽAVU, BEZ OBZIRA NA NJENU VRSTU.
- - JE NEKA OD RANIJIH VIZA PONIŠTENA (OVO SE ODNOSI SAMO NA VIZE ZA DRŽAVU: SAD)
- */
- if (_datumRodjenja->GetGodina() >= 2007)
- return false;
- for (int i = 0; i < _vize.size(); i++) {
- int statusi = _vize[i]->GetStatuse().GetTrenutno();
- if (statusi == 0)
- continue;
- if (_vize[i]->GetDrzava() != v->GetDrzava())
- continue;
- cout << ispisDrzava[_vize[i]->GetDrzava()] << endl;
- cout << ispisStatus[*_vize[i]->GetStatuse().GetT1(statusi - 1)] << endl;
- if (*_vize[i]->GetStatuse().GetT1(statusi - 1) == PONISTENA || *_vize[i]->GetStatuse().GetT1(statusi - 1) == ISTEKLA)
- return false;
- /*if (v->GetDrzava() == SAD) {
- for (int j = 0; j < statusi; j++) {
- if (*_vize[i]->GetStatuse().GetT1(j) == PONISTENA)
- return false;
- }
- }*/
- Datum OD = _vize[i]->GetVazenjeOD(); //15022017
- Datum DO = _vize[i]->GetVazenjeDO(); //18082017
- if (OD.ToDays()<v->GetVazenjeOD().ToDays() && DO.ToDays()>v->GetVazenjeOD().ToDays())
- return false;
- if (OD.ToDays()<v->GetVazenjeDO().ToDays() && DO.ToDays()>v->GetVazenjeDO().ToDays())
- return false;
- }
- PoslovnaViza* poslovna = dynamic_cast<PoslovnaViza*>(v);
- if (poslovna != nullptr) {
- _vize.push_back(new PoslovnaViza(*poslovna));
- return true;
- }
- else {
- TuristickaViza* turisticka = dynamic_cast<TuristickaViza*>(v);
- if (turisticka != nullptr) {
- _vize.push_back(new TuristickaViza(*turisticka));
- return true;
- }
- }
- return false;
- }
- bool DodajStatus(Viza* v, Status s, char* napomena=" ") {
- /*
- STATUSI SE MOGU DODAVATI SAMO U REDOSLIJEDU U KOJEM SE NALAZE U ENUMERACIJI NPR.
- - NIJE MOGUĆE ODBITI VIZU AKO PRETHODNO NIJE IMALA STATUS DA JE ZAHTJEV_ZAPRIMLJEN;
- - NIJE MOGUĆE PONIŠTITI VIZU KOJA PRETHODNO NIJE IZDATA
- */
- // enum Status { ZAHTJEV_ZAPRIMLJEN, ODUSTAO, ODBIJENA, IZDATA, ISTEKLA, PONISTENA };
- for (int i = 0; i < _vize.size(); i++) {
- if (*_vize[i] == *v) {
- for (int j = 0; j < _vize[i]->GetStatuse().GetTrenutno(); j++) {
- if (*_vize[i]->GetStatuse().GetT1(j) >= s)
- return false;
- }
- _vize[i]->GetStatuse().Dodaj(s, napomena);
- return true;
- }
- }
- return false;
- }
- void PrintajVizu(Viza* v) {
- thread printThread(&Print, v->GetDrzava(), v->GetVazenjeOD(), v->GetVazenjeDO(), v->GetNapomena(), v->GetStatuse());
- printThread.join();
- }
- void ZamijeniRijec(char* trazi, char* zamijeniSa) {
- for (int i = 0; i < _vize.size(); i++) {
- if (_vize[i]->GetNapomena() == nullptr)
- continue;
- string s;
- s= regex_replace(_vize[i]->GetNapomena(), regex(trazi), zamijeniSa);
- _vize[i]->SetNapomena(s);
- cout << "Zamijenjeno." << endl;
- }
- }
- vector<Viza*> GetVizeByDrzava(Drzava d, Status s) {
- vector<Viza*>temp;
- for (int i = 0; i < _vize.size(); i++) {
- if (_vize[i]->GetDrzava() == d ) {
- bool provjera = false;
- for (int j = 0; j < _vize[i]->GetStatuse().GetTrenutno(); j++) {
- if (*_vize[i]->GetStatuse().GetT1(j) == s) {
- provjera = true;
- }
- }
- if (provjera == true)
- temp.push_back(_vize[i]);
- }
- }
- return temp;
- }
- };
- void main() {
- Datum danas(15, 2, 2017);
- Datum sutra(++danas); // inkrementiranjem se uvecava dan za 1
- Datum prekosutra;
- Datum dat15022017(15, 2, 2017), dat18082017(18, 8, 2017), dat11052018(11, 5, 2018), dat11122017(11, 12, 2017), dat18092017(18, 9, 2017), dat18122017(18, 12, 2017);
- prekosutra = danas;
- if (prekosutra == danas)
- cout << "Datumi su jednaki" << endl;
- cout << danas << endl << sutra << endl << prekosutra << crt;
- int v6 = 6, v13 = 13, v32 = 32, v63 = 63, v98 = 98, v109 = 109, v196 = 196;
- FITKolekcija<int, int, 6> brojevi;
- brojevi.Dodaj(v196, v6);
- brojevi.Dodaj(v13, v32);
- brojevi.Dodaj(v98, v196);
- brojevi.Dodaj(v63, v13);
- brojevi.Dodaj(v98, v196);
- brojevi.Dodaj(v196, v6);
- cout << brojevi << crt;
- //NA KOJI NAČIN ĆE SE VRŠITI SORTIRANJE PRVENSTVENO ZAVISI OD VRIJEDNOSTI PARAMETRA, A VRŠI SE NA OSNOVU VRIJEDNOSTI TIPA T1
- brojevi.Sortiraj(RASTUCI);
- cout << brojevi << crt;
- brojevi.Sortiraj(OPADAJUCI);
- cout << brojevi << crt;
- try
- {
- //U SLUČAJU PREKORAČENJA DEFINISANE VELIČINE KOLEKCIJE, POTREBNO JE BACITI IZUZETAK
- brojevi.Dodaj(v13, v196);
- }
- catch (exception & err)
- {
- cout << "Error -> " << err.what() << endl;
- }
- Aplikant jasmin("Jasmin Azemovic", Datum(15, 5, 1979), "BS6985645");
- PoslovnaViza poslovna(SAD, dat15022017, dat18082017, "Microsoft", "Vize nemaju informaciju.");
- PoslovnaViza poslovnaé(SAD, dat18092017, dat18122017, "Microsoft", "Vize nemaju informaciju.");
- TuristickaViza turisticka(ENGLESKA, dat18082017, dat11122017, "Whitehall Pl, London SW1A 2BD, UK", "Vize nemaju informaciju.");
- /*
- NOVA VIZA SE NE MOŽE DODATI UKOLIKO:
- - JE APLIKANT MLAĐI OD 10 GODINA
- - U TOM PERIODU (ODNOSI SE NA PERIOD VIZE OD - DO) NE POSTOJI VAŽEĆA (POJAM VAŽEĆA PODRAZUMIJEVA DA JE POSLJEDNJI STATUS VIZE BIO IZDATA TJ.
- DA VIZA NIJE PONIŠTENA ILI ISTEKLA) VIZA ZA TU DRŽAVU, BEZ OBZIRA NA NJENU VRSTU.
- - JE NEKA OD RANIJIH VIZA PONIŠTENA (OVO SE ODNOSI SAMO NA VIZE ZA DRŽAVU: SAD)
- */
- if (jasmin.DodajVizu(&poslovna))
- cout << "Podaci o vizi uspješno zaprimljeni" << endl;
- /*
- STATUSI SE MOGU DODAVATI SAMO U REDOSLIJEDU U KOJEM SE NALAZE U ENUMERACIJI NPR.
- - NIJE MOGUĆE ODBITI VIZU AKO PRETHODNO NIJE IMALA STATUS DA JE ZAHTJEV_ZAPRIMLJEN;
- - NIJE MOGUĆE PONIŠTITI VIZU KOJA PRETHODNO NIJE IZDATA
- */
- if (jasmin.DodajStatus(&poslovna, ZAHTJEV_ZAPRIMLJEN, "provjeriti navode sa predstavnicima kompanije Microsoft"))
- cout << "Status vize uspijesno promijenjen" << endl;
- else
- cout << "Aplikant " << jasmin << " ne posjeduje evidentiranu trazenu vizu ili status vize nema odgovarajucu vrijednost" << endl;
- if (jasmin.DodajStatus(&poslovna,PONISTENA, "predstavnicima kompanije Microsoft nemaju informaciju o posjeti navedenog aplikanta"))
- cout << "Status vize uspijesno promijenjen" << endl;
- else
- cout << "Aplikant " << jasmin << " ne posjeduje evidentiranu trazenu vizu ili status vize nema odgovarajucu vrijednost" << endl;
- if (jasmin.DodajStatus(&poslovna, IZDATA, "predstavnicima kompanije Microsoft nemaju informaciju o posjeti navedenog aplikanta"))
- cout << "Status vize uspijesno promijenjen" << endl;
- else
- cout << "Aplikant " << jasmin << " ne posjeduje evidentiranu trazenu vizu ili status vize nema odgovarajucu vrijednost" << endl;
- if (jasmin.DodajVizu(&turisticka))
- cout << "Dodana viza." << endl;
- if (jasmin.DodajStatus(&turisticka, ZAHTJEV_ZAPRIMLJEN))
- cout << "Status vize uspijesno promijenjen8888" << endl;
- else
- cout << "Aplikant " << jasmin << " ne posjeduje evidentiranu trazenu vizu ili status vize nema odgovarajucu vrijednost" << endl;
- //enum Status { ZAHTJEV_ZAPRIMLJEN, ODUSTAO, ODBIJENA, IZDATA, ISTEKLA, PONISTENA };
- if (jasmin.DodajStatus(&turisticka, IZDATA)) {
- cout << "Status vize uspijesno promijenjen" << endl;
- //U ZASEBNOJ NITI URADITI PRINTANJE VIZE...KORISTITI METODU SLEEP_FOR
- jasmin.PrintajVizu(&turisticka);
- }
- else
- cout << "Aplikant " << jasmin << " ne posjeduje evidentiranu trazenu vizu ili status vize nema odgovarajucu vrijednost" << endl;
- //VRAĆA PODATKE O SVIM VIZAMA KOJE SU IZDATE ZA ODREĐENU DRŽAVU, A KOJE SU IMALE ODREĐENI STATUS
- // vector<Viza *> jasminVize = jasmin.GetVizeByDrzava(SAD, PONISTENA);
- //UNUTAR NAPOMENE MIJENJA SADRŽAJ "nemaju informaciju" SA "su upoznti sa" - KORISTITI REGEX
- jasmin.ZamijeniRijec("nemaju informaciju", "su upoznti sa");
- if (jasmin.DodajVizu(&poslovnaé)==false)
- cout << "Nije dodana." << endl;
- cout << jasmin << endl;
- ///*
- // Aplikant jasmin2 = jasmin;
- // Aplikant jasmin3("Jasmin Azemovic3", Datum(15, 5, 1979), "BS6985645");
- // jasmin3.DodajVizu(&turisticka);
- // jasmin2 = jasmin3;
- // cout << jasmin2;
- // */
- cout << "JASMIN VIZE:" << endl;
- vector<Viza *> jasminVize = jasmin.GetVizeByDrzava(SAD, PONISTENA);
- for (int i = 0; i < jasminVize.size(); i++) {
- cout << *jasminVize[i] << endl;
- }
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement