Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //narednu liniju code-a ignorisite, osim u slucaju da vam bude predstavljala smetnje u radu
- #pragma warning(disable:4996)
- #include <iostream>
- using namespace std;
- enum enumKursevi { HtmlCSSJavaScript, SoftwareEngeneeringFundamentals, MasteringSQL, WindowsSecurity };
- char *crt = "\n--------------------------------------------\n";
- struct Datum {
- int * _dan, *_mjesec, *_godina;
- void Unos(int d, int m, int g) {
- _dan = new int(d);
- _mjesec = new int(m);
- _godina = new int(g);
- }
- void Ispis() { cout << *_dan << "/" << *_mjesec << "/" << *_godina; }
- void Dealociraj()
- {
- delete _dan; _dan = nullptr;
- delete _mjesec; _mjesec = nullptr;
- delete _godina; _godina = nullptr;
- }
- };
- struct Kurs {
- enumKursevi _kurs;
- Datum * _pocetak;
- Datum * _kraj;
- char * _imePredavaca;
- float _cijenaKursa;
- void Unos(enumKursevi kurs, Datum pocetak, Datum kraj, char *imePredavaca, float cijenaKursa) {
- _kurs = kurs;
- _pocetak = new Datum();
- _pocetak->Unos(*pocetak._dan, *pocetak._mjesec, *pocetak._godina);
- _kraj = new Datum();
- _kraj->Unos(*kraj._dan, *kraj._mjesec, *kraj._godina);
- int size = strlen(imePredavaca) + 1;
- _imePredavaca = new char[size];
- strcpy_s(_imePredavaca, size, imePredavaca);
- _cijenaKursa = cijenaKursa;
- }
- void Ispis() {
- cout << _kurs << " " << _imePredavaca << " " << _cijenaKursa << " (";
- _pocetak->Ispis(); cout << " - "; _kraj->Ispis(); cout << ")";
- }
- void Dealociraj() {
- delete[] _imePredavaca; _imePredavaca = nullptr;
- _pocetak->Dealociraj(); delete _pocetak; _pocetak = nullptr;
- _kraj->Dealociraj(); delete _kraj; _kraj = nullptr;
- }
- };
- struct Polaznik {
- char * _imePrezime;
- Datum * _datumRodjenja;
- void Unos(char *imePrezime, Datum datumRodjenja) {
- int size = strlen(imePrezime) + 1;
- _imePrezime = new char[size];
- strcpy_s(_imePrezime, size, imePrezime);
- _datumRodjenja = new Datum;
- _datumRodjenja->Unos(*datumRodjenja._dan, *datumRodjenja._mjesec, *datumRodjenja._godina);
- }
- void Dealociraj() {
- delete[] _imePrezime; _imePrezime = nullptr;
- _datumRodjenja->Dealociraj();
- delete _datumRodjenja; _datumRodjenja = nullptr;
- }
- void Ispis() { cout << _imePrezime << "("; _datumRodjenja->Ispis(); cout << ")"; }
- };
- struct Prijava {
- Polaznik * _polaznik; //prijava moze biti pojedinacna ili grupna
- float * _uplaceniIznos;
- /*za svakog polaznika ce se cuvati podatak o iznosu uplate. uplaceni iznos svakog pojedinog polaznika treba biti jednak punoj
- *cijeni kursa osim u sljedecim slucajevima:
- 1. prijave 2 ili 3 polaznika dobijaju 10% popusta na ukupnu cijenu kursa
- 2. prijave za vise od 3 polaznika dobijaju 15% na ukupnu cijenu kursa
- */
- int _trenutnoPolaznika;
- Kurs * _kurs; //prijava treba cuvati adresu (pokazivati) na postojeci kurs, a ne kreirati novi
- void Unos(Kurs *tipKursa)
- {
- _trenutnoPolaznika = 0;
- _polaznik = new Polaznik[_trenutnoPolaznika];
- _uplaceniIznos = new float[_trenutnoPolaznika];
- _kurs = tipKursa;
- }
- void Ispis()
- {
- cout << "Trenutno polaznika: " << _trenutnoPolaznika << endl;
- cout << "Kurs info: ";
- _kurs->Ispis();
- cout << endl << "Upisani kandidati: " << endl;
- cout << crt;
- for (int i = 0; i < _trenutnoPolaznika; i++)
- {
- _polaznik[i].Ispis();
- cout << "\t Platio: " << _uplaceniIznos[i] << endl;
- }
- cout << crt;
- }
- bool UplataIspravna(int kolicina)
- {
- if (_trenutnoPolaznika <= 1)
- return float(kolicina) == _kurs->_cijenaKursa;
- float cijenaPopust;
- if (_trenutnoPolaznika == 2 || _trenutnoPolaznika == 3)
- {
- cijenaPopust = (10 / 100) * _kurs->_cijenaKursa;
- return cijenaPopust == _kurs->_cijenaKursa;
- }
- cijenaPopust = (15 / 100) * _kurs->_cijenaKursa;
- return cijenaPopust == _kurs->_cijenaKursa;
- }
- void ProsiriNiz()
- {
- _trenutnoPolaznika++;
- Polaznik *temp = new Polaznik[_trenutnoPolaznika];
- for (int i = 0; i < (_trenutnoPolaznika - 1); i++)
- {
- temp[i].Unos(_polaznik[i]._imePrezime, *_polaznik[i]._datumRodjenja);
- }
- delete[] _polaznik;
- _polaznik = temp;
- }
- bool DodajPolaznika(Polaznik polaznik, int suma)
- {
- ProsiriNiz();
- //if (!UplataIspravna(suma))
- // return false;
- /*char* ip = polaznik._imePrezime;
- Datum dat = *polaznik._datumRodjenja;
- _polaznik[_trenutnoPolaznika].Unos(ip, dat);*/
- char* ip = polaznik._imePrezime;
- Datum dat = *polaznik._datumRodjenja;
- _polaznik[_trenutnoPolaznika].Unos(ip, dat);
- return true;
- }
- };
- struct SkillsCentar {
- char * _nazivCentra;
- Kurs * _kursevi[50];//JEDAN EDUKACIJSKI CENTAR MOZE NUDITI NAJVISE 50 KURSEVA
- int _trenutnoKurseva;
- Prijava * _prijave;
- int _trenutnoPrijava;
- };
- void main() {
- /*
- 1. BROJ I TIPOVI PARAMETARA MORAJU BITI IDENTICNI ONIMA U TESTNOM CODE-U (OSIM UKOLIKO IMATE OPRAVDANU POTREBU ZA MODIFIKACIJOM). U SUPROTNOM SE RAD NEĆE BODOVATI
- 2. KREIRAJTE .DOC FAJL SA VAŠIM BROJEM INDEKSA ( NPR. IB130030.DOC BEZ IMENA I PREZIMENA), TE NA KRAJU ISPITA U NJEGA KOPIRAJTE RJEŠENJA VAŠIH ZADATAKA.
- NE PREDAVATI .TXT ILI .CPP FAJLOVE. TAKOĐER, UKLONITE SVE DIJELOVE CODE-A KOJI NISU IMPLEMENTIRANI
- 3. TOKOM IZRADE ISPITA NIJE DOZVOLJENO KORIŠTENJE HELP-A
- 4. TOKOM IZRADE ISPITA MOGU BITI POKRENUTA SAMO TRI PROGRAMA: PDF READER (ISPITNI ZADACI), MS VISUAL STUDIO, MS WORD (U KOJI ĆETE KOPIRATI VAŠA RJEŠENJA)
- 5. BEZ OBZIRA NA TO DA LI SU ISPITNI ZADACI URAĐENI, SVI STUDENTI KOJI SU PRISTUPILI ISPITU MORAJU PREDATI SVOJ RAD
- */
- Datum datum1, datum2, datum3, datum4, datum5, datum6, rodjendan;
- datum1.Unos(26, 11, 2015);
- datum2.Unos(29, 5, 2016);
- datum3.Unos(5, 6, 2016);
- datum4.Unos(15, 8, 2016);
- datum5.Unos(13, 7, 2016);
- datum6.Unos(22, 9, 2016);
- rodjendan.Unos(15, 6, 1995);
- Kurs softverski, html, sql, security;
- softverski.Unos(SoftwareEngeneeringFundamentals, datum1, datum2, "Emina Junuz", 1800);
- html.Unos(HtmlCSSJavaScript, datum2, datum3, "Larisa Tipura", 1000);
- sql.Unos(MasteringSQL, datum3, datum4, "Jasmin Azemovic", 2230);
- security.Unos(WindowsSecurity, datum3, datum4, "Adel Handzic", 4000);
- Polaznik denis, zanin, indira, dubravka;
- denis.Unos("Denis Music", rodjendan);
- zanin.Unos("Zanin Vejzovic", rodjendan);
- indira.Unos("Indira Hamulic", rodjendan);
- dubravka.Unos("Dubravka Plosko", rodjendan);
- Prijava denisZaninDubravkaHtml, zaninIndiraHtml, indiraSql;
- denisZaninDubravkaHtml.Unos(&html);
- // denisZaninDubravkaHtml.Ispis();
- //700 predstavlja uplatu polaznika koji se prijavljuje na kurs
- if (denisZaninDubravkaHtml.DodajPolaznika(denis, 700))//tokom prijave polaznika nije potrebno uplatiti kompletan iznos, ali on mora biti veci od 50% iznosa kojeg je u tom momentu potrebno platiti (u zavisnosti od broja prijavljenih tj. ostvarenog popusta)
- cout << "Polaznik uspjesno dodan!" << endl;
- denisZaninDubravkaHtml.Ispis();
- if (denisZaninDubravkaHtml.DodajPolaznika(zanin, 650))
- cout << "Polaznik uspjesno dodan!" << endl;
- if (denisZaninDubravkaHtml.DodajPolaznika(zanin, 650))//onemoguciti dupliranje polaznika na istoj prijavi
- cout << "Polaznik uspjesno dodan!" << endl;
- if (denisZaninDubravkaHtml.DodajPolaznika(dubravka, 430))//uplata ne zadovoljava kriterije
- cout << "Polaznik uspjesno dodan!" << endl;
- denisZaninDubravkaHtml.Ispis();
- //if (denisZaninDubravkaHtml.DodajUplatu(zanin, 200))//polaznik mora biti prethodno dodan prijavi da bi mogao dodati novu uplatu
- // cout << "Uplata uspjesno dodana" << endl;
- //zaninIndiraHtml.Unos(&html);
- //if (zaninIndiraHtml.DodajPolaznika(zanin, 800))
- // cout << "Polaznik uspjesno dodan!" << endl;
- //if (zaninIndiraHtml.DodajPolaznika(indira, 750))
- // cout << "Polaznik uspjesno dodan!" << endl;
- //float stanjeUplate = denisZaninDubravkaHtml.StatusUplate(zanin);//ako polaznik duguje novca funkcija vraca negativan iznos potrebne uplate
- //cout << "Polaznik "; zanin.Ispis();
- //if (stanjeUplate > 0)
- // cout << " je u pretplati " << stanjeUplate << " KM" << endl;
- //else
- // cout << " je duzan uplatiti " << stanjeUplate * -1 << " KM" << endl;
- //SkillsCentar mostar;
- //mostar.Unos("Skills Center Mostar");
- ////jedan edukacijski centar moze moze nuditi vise istih kurseva (npr. MasteringSQL), ali novi kurs moze poceti tek 15 dana nakon zavrsetka prethodnog kursa npr.
- ////ako prethodni kurs MasteringSQL traje 01.03.2016 - 01.04.2016, onda se novi kurs MasteringSQL moze poceti nakon 15.04.2016
- //if (mostar.DodajKurs(softverski)) {
- // cout << crt << "KURS USPJESNO REGISTROVAN" << crt;
- // softverski.Ispis();
- // cout << crt;
- //}
- ////nije moguce dodati prijavu onog kursa koji nije evidentiran (registrovan, ponudjen) u tom edukacijskom centru
- ////moguce je dodati samo one prijave koje kod kojih ukupna uplata iznosi vise od 80% cijene kursa (za prijavljeni broj polaznika)
- //if (mostar.DodajPrijavu(denisZaninDubravkaHtml)) {
- // cout << crt << "PRIJAVA EVIDENTIRANA" << crt;
- // denisZaninDubravkaHtml.Ispis();
- //}
- //if (mostar.DodajPrijavu(zaninIndiraHtml)) {
- // cout << crt << "PRIJAVA EVIDENTIRANA" << crt;
- // zaninIndiraHtml.Ispis();
- //}
- //int brojPolaznika = 0;
- ////vraca niz polaznika koji nisu izmirili uplate
- //Polaznik * polazniciDugovanja = mostar.PolazniciDugovanja(brojPolaznika);
- //cout << "Pronadjeno " << brojPolaznika << " polaznika koji nisu kompletirali svoje uplate --->>> ";
- //for (size_t i = 0; i < brojPolaznika; i++)
- // polazniciDugovanja[i].Ispis();
- ////PretragaRekurzivno - rekurzivna funkcija pronalazi najveci iznos duga ostvarenog u odredjenom edukacijskom centru
- //cout << "Najveci dug iznosi " << PretragaRekurzivno(/*potrebni parametri*/) << endl;
- ////ispisuje sve informacije o edukacijskom centru. prije ispisa sortirati sve prijave po visini dugovanja njenih polaznika
- //mostar.Ispis();
- //izvrsiti potrebne dealokacije
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement