Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <regex>
  5. #include <mutex>
  6. #include <chrono>
  7. #include <thread>
  8. using namespace std;
  9.  
  10. mutex m;
  11. const char *crt = "\n-----------------------------------------------\n";
  12.  
  13. enum Status { ZAHTJEV_ZAPRIMLJEN, ODUSTAO, ODBIJENA, IZDATA, ISTEKLA, PONISTENA };
  14. const char* statusTxt[] = { "ZAHTJEV_ZAPRIMLJEN", "ODUSTAO", "ODBIJENA", "IZDATA", "ISTEKLA", "PONISTENA" };
  15. enum Sortiranje { RASTUCI, OPADAJUCI };
  16. enum Drzava { SAD, AUSTRALIJA, ENGLESKA };
  17. const char* drzavaTxt[] = { "SAD", "AUSTRALIJA", "ENGLESKA" };
  18.  
  19. class Datum {
  20. int *_dan, *_mjesec, *_godina;
  21. public:
  22. Datum(int dan = 1, int mjesec = 1, int godina = 2000) {
  23. _dan = new int(dan);
  24. _mjesec = new int(mjesec);
  25. _godina = new int(godina);
  26. }
  27. Datum(const Datum& d) {
  28. _dan = new int(*d._dan);
  29. _mjesec = new int(*d._mjesec);
  30. _godina = new int(*d._godina);
  31. }
  32. ~Datum() {
  33. delete _dan; _dan = nullptr;
  34. delete _mjesec; _mjesec = nullptr;
  35. delete _godina; _godina = nullptr;
  36. }
  37. friend ostream& operator<< (ostream &COUT, Datum &obj) {
  38. COUT << *obj._dan << "." << *obj._mjesec << "." << *obj._godina;
  39. return COUT;
  40. }
  41.  
  42. bool operator==(const Datum& d) {
  43. return *_dan == *d._dan&&*_mjesec == *d._mjesec&&*_godina == *d._godina;
  44. }
  45.  
  46. Datum & operator=(const Datum&d) {
  47. if (this != &d) {
  48. *_dan = *d._dan;
  49. *_mjesec = *d._mjesec;
  50. *_godina = *d._godina;
  51. }
  52. return *this;
  53. }
  54. Datum &operator++() {
  55. (*_dan)++;
  56. if (*_dan > 31) {
  57. *_dan = 1;
  58. *_mjesec = *_mjesec + 1;
  59. }
  60. if (*_mjesec > 12) {
  61.  
  62. *_mjesec = 1;
  63. *_godina = *_godina + 1;
  64. }
  65.  
  66. return *this;
  67. }
  68. bool operator >(const Datum &d) {
  69. return GetDani() > d.GetDani();
  70. }
  71. int GetDani()const {
  72. return *_dan + *_mjesec * 30 + *_godina * 365;
  73. }
  74. int GetYear() { return *_godina; }
  75.  
  76.  
  77. };
  78.  
  79. template<class T1, class T2, int max>
  80. class FITKolekcija {
  81. T1 * _elementi1[max];
  82. T2 * _elementi2[max];
  83. int _trenutno;
  84. public:
  85. FITKolekcija() {
  86. for (size_t i = 0; i < max; i++) {
  87. _elementi1[i] = nullptr;
  88. _elementi2[i] = nullptr;
  89. }
  90. _trenutno = 0;
  91. }
  92. ~FITKolekcija() {
  93. for (size_t i = 0; i < max; i++) {
  94. delete _elementi1[i]; _elementi1[i] = nullptr;
  95. delete _elementi2[i]; _elementi2[i] = nullptr;
  96. }
  97. }
  98. T1 ** GetT1() { return _elementi1; }
  99. T2 ** GetT2() { return _elementi2; }
  100. int GetTrenutno() { return _trenutno; }
  101. int GetMax()const { return max; }
  102. friend ostream& operator<< (ostream &COUT, FITKolekcija &obj) {
  103. for (size_t i = 0; i < obj._trenutno; i++)
  104. COUT << *obj._elementi1[i] << " " << *obj._elementi2[i] << endl;
  105. return COUT;
  106. }
  107. void Dodaj(T1 el1, T2 el2) {
  108. if (_trenutno == max) {
  109. throw exception("Kolekcija je puna.");
  110. }
  111. _elementi1[_trenutno] = new T1(el1);
  112. _elementi2[_trenutno] = new T2(el2);
  113. _trenutno++;
  114. }
  115. void Sortiraj(Sortiranje s) {
  116. if (s == RASTUCI) {
  117. bool promjena = true;
  118. while (promjena)
  119. {
  120. promjena = false;
  121. for (size_t i = 0; i < _trenutno - 1; i++)
  122. {
  123. if (*_elementi1[i] > *_elementi1[i + 1]) {
  124. swap(*_elementi1[i], *_elementi1[i + 1]);
  125. swap(*_elementi2[i], *_elementi2[i + 1]);
  126. promjena = true;
  127. }
  128. }
  129. }
  130. }
  131. else if (s == OPADAJUCI) {
  132. bool promjena = true;
  133. while (promjena)
  134. {
  135. promjena = false;
  136. for (size_t i = 0; i < _trenutno - 1; i++)
  137. {
  138. if (*_elementi1[i] < *_elementi1[i + 1]) {
  139. swap(*_elementi1[i], *_elementi1[i + 1]);
  140. swap(*_elementi2[i], *_elementi2[i + 1]);
  141. promjena = true;
  142. }
  143. }
  144. }
  145. }
  146. }
  147.  
  148. };
  149.  
  150.  
  151. class Viza {
  152. protected:
  153. Drzava _drzava;
  154. Datum _vazenjeOD;
  155. Datum _vazenjeDO;
  156. char * _napomena;
  157. // string se odnosi na razlog promjene statusa,
  158. //a moguće je samo 10 izmjena statusa
  159. FITKolekcija<Status, string, 10> _statusi;
  160. public:
  161. Viza(Drzava drzava, Datum _OD, Datum _DO, char * napomena = nullptr) :_vazenjeDO(_DO), _vazenjeOD(_OD)
  162. {
  163. if (napomena != nullptr) {
  164. _napomena = new char[strlen(napomena) + 1];
  165. strcpy_s(_napomena, strlen(napomena) + 1, napomena);
  166. }
  167. else
  168. _napomena = nullptr;
  169. _drzava = drzava;
  170. }
  171. Viza(const Viza &v) :_drzava(v._drzava), _vazenjeOD(v._vazenjeOD), _vazenjeDO(v._vazenjeDO), _statusi(v._statusi) {
  172. if (v._napomena != nullptr) {
  173. int size = strlen(v._napomena) + 1;
  174. _napomena = new char[size];
  175. strcpy_s(_napomena, size, v._napomena);
  176. }
  177. }
  178. ~Viza() { delete[] _napomena; _napomena = nullptr; }
  179. Datum GetVazenjeOD()const { return _vazenjeOD; }
  180. Datum GetVazenjeDO() const{ return _vazenjeDO; }
  181. char * GetNapomena() const{ return _napomena; }
  182. Drzava GetDrzava()const { return _drzava; }
  183. FITKolekcija<Status, string, 10> & GetStatuse() { return _statusi; }
  184. virtual void Info() = 0;
  185. bool operator==(const Viza &v) {
  186. return _drzava == v.GetDrzava() && _vazenjeDO == v.GetVazenjeDO() && _vazenjeOD == v.GetVazenjeOD();
  187. }
  188. void DodajStatus(Status s, string poruka) {
  189. _statusi.Dodaj(s, poruka);
  190. }
  191. void SetNapomena(const char *napomena) {
  192. delete[] _napomena;
  193. int size = strlen(napomena) + 1;
  194. _napomena = new char[size];
  195. strcpy_s(_napomena, size, napomena);
  196. }
  197. };
  198. ostream &operator <<(ostream &o, Status s) {
  199. if (s == Status::ZAHTJEV_ZAPRIMLJEN) o << "ZAHTJEV_ZAPRIMLJEN";
  200. else if (s == Status::ODUSTAO) o << "ODUSTAO";
  201. else if (s == Status::ODBIJENA) o << "ODBIJENA";
  202. else if (s == Status::IZDATA) o << "IZDATA";
  203. else if (s == Status::ISTEKLA) o << "ISTEKLA";
  204. else if (s == Status::PONISTENA) o << "PONISTENA";
  205. return o;
  206. }
  207. class PoslovnaViza :public Viza {
  208. string _kompanija; //naziv kompanije koja potvrđuje da posluje sa aplikantom
  209. public:
  210. PoslovnaViza(Drzava drzava, Datum _OD, Datum _DO, string kompanija, char * napomena = nullptr) : Viza(drzava, _OD, _DO, napomena) {
  211. _kompanija = kompanija;
  212. }
  213. friend ostream & operator << (ostream & COUT, PoslovnaViza & obj) {
  214. COUT <<drzavaTxt[ obj._drzava ]<< " " << obj._vazenjeOD << " " << obj._vazenjeDO << " " << obj._kompanija << endl;
  215. COUT << ((obj._napomena != nullptr) ? obj._napomena : "") << endl;
  216. COUT << "STATUSI -> " << obj._statusi<< endl;
  217. return COUT;
  218.  
  219. }
  220. void Info() {
  221. cout << *this << endl;
  222. }
  223.  
  224. };
  225. class TuristickaViza : public Viza {
  226. string _adresa; //adresa hotele ili drugog smještaja na kojoj će aplikant boraviti
  227. public:
  228. TuristickaViza(Drzava drzava, Datum _OD, Datum _DO, string adresa, char * napomena = nullptr) : Viza(drzava, _OD, _DO, napomena) {
  229. _adresa = adresa;
  230. }
  231. friend ostream & operator << (ostream & COUT, TuristickaViza & obj) {
  232. COUT << drzavaTxt[obj._drzava] << " " << obj._vazenjeOD << " " << obj._vazenjeDO << " " << obj._adresa << endl;
  233. COUT << ((obj._napomena != nullptr) ? obj._napomena : "") << endl;
  234. COUT << "STATUSI -> " <<obj._statusi << endl;
  235. return COUT;
  236.  
  237. }
  238. void Info() {
  239. cout << *this << endl;
  240. }
  241. };
  242.  
  243. class Aplikant {
  244. char * _imePrezime;
  245. Datum * _datumRodjenja;
  246. char * _brojPasosa;
  247. vector<Viza *> _vize;
  248. public:
  249. Aplikant(const char * imePrezime, Datum datumRodjenja,const char * brPasosa) {
  250. int vel = strlen(imePrezime) + 1;
  251. _imePrezime = new char[vel];
  252. strcpy_s(_imePrezime, vel, imePrezime);
  253. vel = strlen(brPasosa) + 1;
  254. _brojPasosa = new char[vel];
  255. strcpy_s(_brojPasosa, vel, brPasosa);
  256. _datumRodjenja = new Datum(datumRodjenja);
  257. }
  258. ~Aplikant() {
  259. delete[]_imePrezime; _imePrezime = nullptr;
  260. delete[]_brojPasosa; _brojPasosa = nullptr;
  261. delete _datumRodjenja; _datumRodjenja = nullptr;
  262. for (size_t i = 0; i < _vize.size(); i++)
  263. {
  264. delete _vize[i]; _vize[i] = nullptr;
  265. }
  266. }
  267. friend ostream & operator << (ostream & COUT, const Aplikant & obj) {
  268. COUT << obj._imePrezime << " " << *obj._datumRodjenja << " " << obj._brojPasosa << endl;
  269. COUT << "VIZE -> " << endl;
  270. for (size_t i = 0; i < obj._vize.size(); i++)
  271. obj._vize[i]->Info();
  272. return COUT;
  273. }
  274.  
  275. vector<Viza * > GetVize() { return _vize; }
  276. /*
  277. NOVA VIZA SE NE MOŽE DODATI UKOLIKO:
  278. - JE APLIKANT MLAĐI OD 10 GODINA
  279. - U TOM PERIODU (ODNOSI SE NA PERIOD VIZE OD - DO) NE POSTOJI VAŽEĆA
  280. (POJAM VAŽEĆA PODRAZUMIJEVA DA JE POSLJEDNJI STATUS VIZE BIO IZDATA TJ. DA VIZA NIJE PONIŠTENA ILI ISTEKLA)
  281. VIZA ZA TU DRŽAVU, BEZ OBZIRA NA NJENU VRSTU.
  282. - JE NEKA OD RANIJIH VIZA PONIŠTENA (OVO SE ODNOSI SAMO NA VIZE ZA DRŽAVU: SAD)
  283. */
  284. bool DodajVizu(Viza* v) {
  285. if (v->GetVazenjeOD().GetYear() - _datumRodjenja->GetYear() < 18) {
  286. return false;
  287. }
  288. for (size_t i = 0; i < _vize.size(); i++)
  289. {
  290. if (_vize[i]->GetDrzava() == v->GetDrzava() && _vize[i]->GetVazenjeDO() > v->GetVazenjeOD())
  291. {
  292. for (size_t j = 0; j < _vize[i]->GetStatuse().GetTrenutno(); j++)
  293. {
  294. if (*_vize[i]->GetStatuse().GetT1()[j] == Status::IZDATA) {
  295. return false;
  296. }
  297. }
  298. }
  299. if (_vize[i]->GetDrzava() == Drzava::SAD&&v->GetDrzava() == Drzava::SAD) {
  300. for (size_t j = 0; j < _vize[i]->GetStatuse().GetTrenutno(); j++)
  301. {
  302. if (*_vize[i]->GetStatuse().GetT1()[j] == Status::PONISTENA) {
  303. return false;
  304. }
  305. }
  306. }
  307. }
  308. if (dynamic_cast<PoslovnaViza*>(v) != nullptr) {
  309. _vize.push_back(new PoslovnaViza(*dynamic_cast<PoslovnaViza*>(v)));
  310. }
  311. if (dynamic_cast<TuristickaViza*>(v) != nullptr) {
  312. _vize.push_back(new TuristickaViza(*dynamic_cast<TuristickaViza*>(v)));
  313. }
  314. return true;
  315.  
  316.  
  317. }
  318.  
  319. /*
  320. STATUSI SE MOGU DODAVATI SAMO U REDOSLIJEDU U KOJEM SE NALAZE U ENUMERACIJI NPR.
  321. - NIJE MOGUĆE ODBITI VIZU AKO PRETHODNO NIJE IMALA STATUS DA JE ZAHTJEV_ZAPRIMLJEN;
  322. - NIJE MOGUĆE PONIŠTITI VIZU KOJA PRETHODNO NIJE IZDATA
  323. */
  324. bool DodajStatus(Viza*v, Status s, string poruka = "") {
  325. for (size_t i = 0; i < _vize.size(); i++)
  326. {
  327. if (*_vize[i] == *v) {
  328. bool zahtjevZaprimljen = false;
  329. bool izdata = false;
  330. for (size_t j = 0; j < _vize[i]->GetStatuse().GetTrenutno(); j++)
  331. {
  332. if (*_vize[i]->GetStatuse().GetT1()[j] == Status::ZAHTJEV_ZAPRIMLJEN) {
  333. zahtjevZaprimljen = true;
  334. }
  335. if (*_vize[i]->GetStatuse().GetT1()[j] == Status::IZDATA) {
  336. izdata = true;
  337. }
  338. }
  339. if (s == Status::ZAHTJEV_ZAPRIMLJEN) {
  340. _vize[i]->DodajStatus(s, poruka);
  341. return true;
  342. }
  343. else if ((s == Status::ODUSTAO || s == Status::ODBIJENA || s == Status::IZDATA) && zahtjevZaprimljen) {
  344. _vize[i]->DodajStatus(s, poruka);
  345. return true;
  346. }
  347. else if ((s == Status::PONISTENA || s == Status::ISTEKLA) && izdata) {
  348. _vize[i]->DodajStatus(s, poruka);
  349. return true;
  350. }
  351. }
  352. }
  353. return false;
  354. }
  355. void PrintajVizu(Viza *v) {
  356. for (size_t i = 0; i < _vize.size(); i++)
  357. {
  358. if (*v == *_vize[i]) {
  359. thread t([](Viza *v) {
  360. m.lock();
  361. v->Info();
  362. this_thread::sleep_for(chrono::seconds(5));
  363. m.unlock();
  364. }, _vize[i]);
  365. t.join();
  366. }
  367. }
  368. }
  369. vector<Viza*> GetVizeByDrzava(Drzava d, Status s) {
  370. vector<Viza*> temp;
  371. for (size_t i = 0; i < _vize.size(); i++)
  372. {
  373. if (_vize[i]->GetDrzava() == d) {
  374. bool status = false, izdata = false;
  375. for (size_t j = 0; j < _vize[i]->GetStatuse().GetTrenutno(); j++)
  376. {
  377. if (*_vize[i]->GetStatuse().GetT1()[j] == s)
  378. status = true;
  379. if (*_vize[i]->GetStatuse().GetT1()[j] == Status::IZDATA)
  380. izdata = true;
  381. }
  382. if (status && izdata)
  383. temp.push_back(_vize[i]);
  384. }
  385. }
  386. return temp;
  387. }
  388. void ZamijeniRijec(string rijec, string subrijec) {
  389. regex r("(\\b" + rijec + "\\b)|(\\B" + rijec + "\\B)");
  390. for (size_t i = 0; i < _vize.size(); i++)
  391. {
  392. if (_vize[i]->GetNapomena() != nullptr) {
  393. string zamijeni(_vize[i]->GetNapomena());
  394. string zamijenjenaRijec = regex_replace(zamijeni, r, subrijec);
  395. _vize[i]->SetNapomena(zamijenjenaRijec.c_str());
  396. }
  397. }
  398. }
  399. };
  400.  
  401. void main() {
  402.  
  403. /****************************************************************************
  404. 1. SVE KLASE TREBAJU POSJEDOVATI ADEKVATAN DESTRUKTOR
  405. 2. NAMJERNO IZOSTAVLJANJE KOMPLETNIH I/ILI POJEDINIH DIJELOVA DESTRUKTORA KOJI UZROKUJU RUNTIME ERROR ĆE BITI OZNACENO KAO "RE"
  406. 3. SPAŠAVAJTE PROJEKAT KAKO BI SE SPRIJEČILO GUBLJENJE URAĐENOG ZADATKA
  407. 4. PROGRAMSKI CODE SE TAKOĐER NALAZI U FAJLU CODE.TXT
  408. 5. NAZIVI FUNKCIJA, TE BROJ I TIP PARAMETARA MORAJU BITI IDENTIČNI ONIMA KOJI SU KORIŠTENI U TESTNOM CODE-U, OSIM U SLUČAJU DA POSTOJI ADEKVATAN RAZLOG ZA NJIHOVU MODIFIKACIJU. OSTALE, POMOĆNE FUNKCIJE MOŽETE IMENOVATI I DODAVATI PO ŽELJI.
  409. 6. IZUZETAK BACITE U FUNKCIJAMA U KOJIMA JE TO NAZNAČENO.
  410. ****************************************************************************/
  411.  
  412.  
  413.  
  414. Datum danas(15, 2, 2017);
  415. Datum sutra(++danas);// inkrementiranjem se uvecava dan za 1
  416. Datum prekosutra;
  417. Datum dat15022017(15, 2, 2017), dat18082017(18, 8, 2017), dat11052018(11, 5, 2018), dat11122017(11, 12, 2017);
  418.  
  419.  
  420. prekosutra = danas;
  421. if (prekosutra == danas)
  422. cout << "Datumi su jednaki" << endl;
  423. cout << danas << endl << sutra << endl << prekosutra << crt;
  424.  
  425. int v6 = 6, v13 = 13, v32 = 32, v63 = 63, v98 = 98, v109 = 109, v196 = 196;
  426.  
  427. FITKolekcija<int, int, 7> brojevi;
  428. brojevi.Dodaj(v196, v6);
  429. brojevi.Dodaj(v13, v32);
  430. brojevi.Dodaj(v98, v196);
  431. brojevi.Dodaj(v63, v13);
  432. brojevi.Dodaj(v98, v196);
  433. brojevi.Dodaj(v196, v6);
  434.  
  435. cout << brojevi << crt;
  436. //NA KOJI NAČIN ĆE SE VRŠITI SORTIRANJE PRVENSTVENO ZAVISI OD VRIJEDNOSTI PARAMETRA, A VRŠI SE NA OSNOVU VRIJEDNOSTI TIPA T1
  437. brojevi.Sortiraj(RASTUCI);
  438. cout << brojevi << crt;
  439. brojevi.Sortiraj(OPADAJUCI);
  440. cout << brojevi << crt;
  441.  
  442. try
  443. {
  444. //U SLUČAJU PREKORAČENJA DEFINISANE VELIČINE KOLEKCIJE, POTREBNO JE BACITI IZUZETAK
  445. brojevi.Dodaj(v13, v196);
  446. }
  447. catch (exception & err)
  448. {
  449. cout << "Error -> " << err.what() << endl;
  450. }
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457. Aplikant jasmin("Jasmin Azemovic", Datum(15, 5, 1979), "BS6985645");
  458. PoslovnaViza poslovna(SAD, dat15022017, dat18082017, "Microsoft");
  459.  
  460. /*
  461. NOVA VIZA SE NE MOŽE DODATI UKOLIKO:
  462. - JE APLIKANT MLAĐI OD 10 GODINA
  463. - U TOM PERIODU (ODNOSI SE NA PERIOD VIZE OD - DO) NE POSTOJI VAŽEĆA
  464. (POJAM VAŽEĆA PODRAZUMIJEVA DA JE POSLJEDNJI STATUS VIZE BIO IZDATA TJ. DA VIZA NIJE PONIŠTENA ILI ISTEKLA)
  465. VIZA ZA TU DRŽAVU, BEZ OBZIRA NA NJENU VRSTU.
  466. - JE NEKA OD RANIJIH VIZA PONIŠTENA (OVO SE ODNOSI SAMO NA VIZE ZA DRŽAVU: SAD)
  467. */
  468. if (jasmin.DodajVizu(&poslovna))
  469. cout << "Podaci o vizi uspješno zaprimljeni" << endl;
  470. /*
  471. STATUSI SE MOGU DODAVATI SAMO U REDOSLIJEDU U KOJEM SE NALAZE U ENUMERACIJI NPR.
  472. - NIJE MOGUĆE ODBITI VIZU AKO PRETHODNO NIJE IMALA STATUS DA JE ZAHTJEV_ZAPRIMLJEN;
  473. - NIJE MOGUĆE PONIŠTITI VIZU KOJA PRETHODNO NIJE IZDATA
  474. */
  475. cout << "************* POSLOVNA ******************" << endl;
  476. if (jasmin.DodajStatus(&poslovna, ZAHTJEV_ZAPRIMLJEN, "provjeriti navode sa predstavnicima kompanije Microsoft"))
  477. cout << "Status vize uspijesno promijenjen" << endl;
  478. else
  479. cout << "Aplikant " << jasmin << " ne posjeduje evidentiranu trazenu vizu ili status vize nema odgovarajucu vrijednost" << endl;
  480.  
  481.  
  482. if (jasmin.DodajStatus(&poslovna, PONISTENA, "predstavnicima kompanije Microsoft nemaju informaciju o posjeti navedenog aplikanta"))
  483. cout << "Status vize uspijesno promijenjen" << endl;
  484. else
  485. cout << "Aplikant " << jasmin << " ne posjeduje evidentiranu trazenu vizu ili status vize nema odgovarajucu vrijednost" << endl;
  486.  
  487. TuristickaViza turisticka(ENGLESKA, dat18082017, dat11122017, "Whitehall Pl, London SW1A 2BD, UK");
  488. //jasmin.DodajVizu(&turisticka);
  489. cout << "************* TURISTICKA ******************" << endl;
  490. if (jasmin.DodajStatus(&turisticka, ZAHTJEV_ZAPRIMLJEN))
  491. cout << "Status vize uspijesno promijenjen" << endl;
  492. else
  493. cout << "Aplikant " << jasmin << " ne posjeduje evidentiranu trazenu vizu ili status vize nema odgovarajucu vrijednost" << endl;
  494.  
  495. if (jasmin.DodajStatus(&turisticka, IZDATA)) {
  496. cout << "Status vize uspijesno promijenjen" << endl;
  497. //U ZASEBNOJ NITI URADITI PRINTANJE VIZE...KORISTITI METODU SLEEP_FOR
  498. jasmin.PrintajVizu(&turisticka);
  499. }
  500. else
  501. cout << "Aplikant " << jasmin << " ne posjeduje evidentiranu trazenu vizu ili status vize nema odgovarajucu vrijednost" << endl;
  502. //VRAĆA PODATKE O SVIM VIZAMA KOJE SU IZDATE ZA ODREĐENU DRŽAVU, A KOJE SU IMALE ODREĐENI STATUS
  503. vector<Viza *> jasminVize = jasmin.GetVizeByDrzava(SAD, PONISTENA);
  504.  
  505. //UNUTAR NAPOMENE MIJENJA SADRŽAJ "nemaju informaciju" SA "su upoznti sa" - KORISTITI REGEX
  506. jasmin.ZamijeniRijec("nemaju informaciju", "su upoznti sa");
  507.  
  508. system("pause");
  509.  
  510. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement