Advertisement
uraharadono

Kursevi ispit

Sep 12th, 2017
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.66 KB | None | 0 0
  1. //narednu liniju code-a ignorisite, osim u slucaju da vam bude predstavljala smetnje u radu
  2. #pragma warning(disable:4996)
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7.  
  8. enum enumKursevi { HtmlCSSJavaScript, SoftwareEngeneeringFundamentals, MasteringSQL, WindowsSecurity };
  9. char *crt = "\n--------------------------------------------\n";
  10.  
  11. struct Datum {
  12.     int * _dan, *_mjesec, *_godina;
  13.     void Unos(int d, int m, int g) {
  14.         _dan = new int(d);
  15.         _mjesec = new int(m);
  16.         _godina = new int(g);
  17.     }
  18.     void Ispis() { cout << *_dan << "/" << *_mjesec << "/" << *_godina; }
  19.     void Dealociraj()
  20.     {
  21.         delete _dan; _dan = nullptr;
  22.         delete _mjesec; _mjesec = nullptr;
  23.         delete _godina; _godina = nullptr;
  24.     }
  25. };
  26.  
  27. struct Kurs {
  28.     enumKursevi _kurs;
  29.     Datum * _pocetak;
  30.     Datum * _kraj;
  31.     char * _imePredavaca;
  32.     float _cijenaKursa;
  33.  
  34.     void Unos(enumKursevi kurs, Datum pocetak, Datum kraj, char *imePredavaca, float cijenaKursa) {
  35.         _kurs = kurs;
  36.         _pocetak = new Datum();
  37.         _pocetak->Unos(*pocetak._dan, *pocetak._mjesec, *pocetak._godina);
  38.         _kraj = new Datum();
  39.         _kraj->Unos(*kraj._dan, *kraj._mjesec, *kraj._godina);
  40.         int size = strlen(imePredavaca) + 1;
  41.         _imePredavaca = new char[size];
  42.         strcpy_s(_imePredavaca, size, imePredavaca);
  43.         _cijenaKursa = cijenaKursa;
  44.     }
  45.     void Ispis() {
  46.         cout << _kurs << " " << _imePredavaca << " " << _cijenaKursa << " (";
  47.         _pocetak->Ispis(); cout << " - "; _kraj->Ispis(); cout << ")";
  48.     }
  49.     void Dealociraj() {
  50.         delete[] _imePredavaca; _imePredavaca = nullptr;
  51.         _pocetak->Dealociraj(); delete _pocetak; _pocetak = nullptr;
  52.         _kraj->Dealociraj(); delete _kraj; _kraj = nullptr;
  53.     }
  54. };
  55.  
  56. struct Polaznik {
  57.     char * _imePrezime;
  58.     Datum * _datumRodjenja;
  59.     void Unos(char *imePrezime, Datum datumRodjenja) {
  60.         int size = strlen(imePrezime) + 1;
  61.         _imePrezime = new char[size];
  62.         strcpy_s(_imePrezime, size, imePrezime);
  63.         _datumRodjenja = new Datum;
  64.         _datumRodjenja->Unos(*datumRodjenja._dan, *datumRodjenja._mjesec, *datumRodjenja._godina);
  65.     }
  66.     void Dealociraj() {
  67.         delete[] _imePrezime; _imePrezime = nullptr;
  68.         _datumRodjenja->Dealociraj();
  69.         delete _datumRodjenja; _datumRodjenja = nullptr;
  70.     }
  71.     void Ispis() { cout << _imePrezime << "("; _datumRodjenja->Ispis(); cout << ")"; }
  72. };
  73.  
  74. struct Prijava {
  75.     Polaznik * _polaznik; //prijava moze biti pojedinacna ili grupna
  76.     float * _uplaceniIznos;
  77.     /*za svakog polaznika ce se cuvati podatak o iznosu uplate. uplaceni iznos svakog pojedinog polaznika treba biti jednak punoj
  78.      *cijeni kursa osim u sljedecim slucajevima:
  79.     1. prijave 2 ili 3 polaznika dobijaju 10% popusta na ukupnu cijenu kursa
  80.     2. prijave za vise od 3 polaznika dobijaju 15% na ukupnu cijenu kursa
  81.     */
  82.     int _trenutnoPolaznika;
  83.     Kurs * _kurs; //prijava treba cuvati adresu (pokazivati) na postojeci kurs, a ne kreirati novi 
  84.  
  85.     void Unos(Kurs *tipKursa)
  86.     {
  87.         _trenutnoPolaznika = 0;
  88.         _polaznik = new Polaznik[_trenutnoPolaznika];
  89.         _uplaceniIznos = new float[_trenutnoPolaznika];
  90.         _kurs = tipKursa;
  91.     }
  92.    
  93.     void Ispis()
  94.     {
  95.         cout << "Trenutno polaznika: " << _trenutnoPolaznika << endl;
  96.         cout << "Kurs info: ";
  97.         _kurs->Ispis();
  98.         cout << endl << "Upisani kandidati: " << endl;
  99.         cout << crt;
  100.         for (int i = 0; i < _trenutnoPolaznika; i++)
  101.         {
  102.             _polaznik[i].Ispis();
  103.             cout << "\t Platio: " << _uplaceniIznos[i] << endl;
  104.         }
  105.         cout << crt;
  106.     }
  107.  
  108.     bool UplataIspravna(int kolicina)
  109.     {
  110.         if (_trenutnoPolaznika <= 1)
  111.             return float(kolicina) == _kurs->_cijenaKursa;
  112.  
  113.         float cijenaPopust;
  114.         if (_trenutnoPolaznika == 2 || _trenutnoPolaznika == 3)
  115.         {
  116.             cijenaPopust = (10 / 100) * _kurs->_cijenaKursa;
  117.             return cijenaPopust == _kurs->_cijenaKursa;
  118.         }
  119.         cijenaPopust = (15 / 100) * _kurs->_cijenaKursa;
  120.         return cijenaPopust == _kurs->_cijenaKursa;
  121.     }
  122.  
  123.     void ProsiriNiz()
  124.     {
  125.         _trenutnoPolaznika++;
  126.         Polaznik *temp = new Polaznik[_trenutnoPolaznika];
  127.         for (int i = 0; i < (_trenutnoPolaznika - 1); i++)
  128.         {
  129.             temp[i].Unos(_polaznik[i]._imePrezime, *_polaznik[i]._datumRodjenja);
  130.         }
  131.  
  132.         delete[] _polaznik;
  133.         _polaznik = temp;
  134.     }
  135.  
  136.     bool DodajPolaznika(Polaznik polaznik, int suma)
  137.     {
  138.          ProsiriNiz();
  139.         //if (!UplataIspravna(suma))
  140.         //  return false;
  141.  
  142.         /*char* ip = polaznik._imePrezime;
  143.         Datum dat = *polaznik._datumRodjenja;
  144.         _polaznik[_trenutnoPolaznika].Unos(ip, dat);*/
  145.  
  146.         char* ip = polaznik._imePrezime;
  147.         Datum dat = *polaznik._datumRodjenja;
  148.         _polaznik[_trenutnoPolaznika].Unos(ip, dat);
  149.  
  150.         return true;
  151.     }
  152.  
  153.  
  154. };
  155.  
  156. struct SkillsCentar {
  157.     char * _nazivCentra;
  158.     Kurs * _kursevi[50];//JEDAN EDUKACIJSKI CENTAR MOZE NUDITI NAJVISE 50 KURSEVA
  159.     int _trenutnoKurseva;
  160.     Prijava * _prijave;
  161.     int _trenutnoPrijava;
  162. };
  163.  
  164. void main() {
  165.  
  166.     /*
  167.     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
  168.     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.
  169.     NE PREDAVATI .TXT ILI .CPP FAJLOVE. TAKOĐER, UKLONITE SVE DIJELOVE CODE-A KOJI NISU IMPLEMENTIRANI
  170.     3. TOKOM IZRADE ISPITA NIJE DOZVOLJENO KORIŠTENJE HELP-A
  171.     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)
  172.     5. BEZ OBZIRA NA TO DA LI SU ISPITNI ZADACI URAĐENI, SVI STUDENTI KOJI SU PRISTUPILI ISPITU MORAJU PREDATI SVOJ RAD
  173.     */
  174.  
  175.     Datum datum1, datum2, datum3, datum4, datum5, datum6, rodjendan;
  176.     datum1.Unos(26, 11, 2015);
  177.     datum2.Unos(29, 5, 2016);
  178.     datum3.Unos(5, 6, 2016);
  179.     datum4.Unos(15, 8, 2016);
  180.     datum5.Unos(13, 7, 2016);
  181.     datum6.Unos(22, 9, 2016);
  182.     rodjendan.Unos(15, 6, 1995);
  183.  
  184.     Kurs softverski, html, sql, security;
  185.     softverski.Unos(SoftwareEngeneeringFundamentals, datum1, datum2, "Emina Junuz", 1800);
  186.     html.Unos(HtmlCSSJavaScript, datum2, datum3, "Larisa Tipura", 1000);
  187.     sql.Unos(MasteringSQL, datum3, datum4, "Jasmin Azemovic", 2230);
  188.     security.Unos(WindowsSecurity, datum3, datum4, "Adel Handzic", 4000);
  189.  
  190.     Polaznik denis, zanin, indira, dubravka;
  191.     denis.Unos("Denis Music", rodjendan);
  192.     zanin.Unos("Zanin Vejzovic", rodjendan);
  193.     indira.Unos("Indira Hamulic", rodjendan);
  194.     dubravka.Unos("Dubravka Plosko", rodjendan);
  195.        
  196.     Prijava denisZaninDubravkaHtml, zaninIndiraHtml, indiraSql;
  197.     denisZaninDubravkaHtml.Unos(&html);
  198.     // denisZaninDubravkaHtml.Ispis();
  199.  
  200.     //700 predstavlja uplatu polaznika koji se prijavljuje na kurs
  201.     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)
  202.         cout << "Polaznik uspjesno dodan!" << endl;
  203.     denisZaninDubravkaHtml.Ispis();
  204.     if (denisZaninDubravkaHtml.DodajPolaznika(zanin, 650))
  205.         cout << "Polaznik uspjesno dodan!" << endl;
  206.     if (denisZaninDubravkaHtml.DodajPolaznika(zanin, 650))//onemoguciti dupliranje polaznika na istoj prijavi
  207.         cout << "Polaznik uspjesno dodan!" << endl;
  208.     if (denisZaninDubravkaHtml.DodajPolaznika(dubravka, 430))//uplata ne zadovoljava kriterije
  209.         cout << "Polaznik uspjesno dodan!" << endl;
  210.  
  211.     denisZaninDubravkaHtml.Ispis();
  212.     //if (denisZaninDubravkaHtml.DodajUplatu(zanin, 200))//polaznik mora biti prethodno dodan prijavi da bi mogao dodati novu uplatu
  213.     //  cout << "Uplata uspjesno dodana" << endl;
  214.  
  215.     //zaninIndiraHtml.Unos(&html);
  216.     //if (zaninIndiraHtml.DodajPolaznika(zanin, 800))
  217.     //  cout << "Polaznik uspjesno dodan!" << endl;
  218.     //if (zaninIndiraHtml.DodajPolaznika(indira, 750))
  219.     //  cout << "Polaznik uspjesno dodan!" << endl;
  220.  
  221.     //float stanjeUplate = denisZaninDubravkaHtml.StatusUplate(zanin);//ako polaznik duguje novca funkcija vraca negativan iznos potrebne uplate
  222.     //cout << "Polaznik "; zanin.Ispis();
  223.     //if (stanjeUplate > 0)
  224.     //  cout << " je u pretplati " << stanjeUplate << " KM" << endl;
  225.     //else
  226.     //  cout << " je duzan uplatiti " << stanjeUplate * -1 << " KM" << endl;
  227.  
  228.     //SkillsCentar mostar;
  229.     //mostar.Unos("Skills Center Mostar");
  230.     ////jedan edukacijski centar moze moze nuditi vise istih kurseva (npr. MasteringSQL), ali novi kurs moze poceti tek 15 dana nakon zavrsetka prethodnog kursa npr.
  231.     ////ako prethodni kurs MasteringSQL traje 01.03.2016 - 01.04.2016, onda se novi kurs MasteringSQL moze poceti nakon 15.04.2016
  232.     //if (mostar.DodajKurs(softverski)) {
  233.     //  cout << crt << "KURS USPJESNO REGISTROVAN" << crt;
  234.     //  softverski.Ispis();
  235.     //  cout << crt;
  236.     //}
  237.     ////nije moguce dodati prijavu onog kursa koji nije evidentiran (registrovan, ponudjen) u tom edukacijskom centru
  238.     ////moguce je dodati samo one prijave koje kod kojih ukupna uplata iznosi vise od 80% cijene kursa (za prijavljeni broj polaznika)
  239.     //if (mostar.DodajPrijavu(denisZaninDubravkaHtml)) {
  240.     //  cout << crt << "PRIJAVA EVIDENTIRANA" << crt;
  241.     //  denisZaninDubravkaHtml.Ispis();
  242.     //}
  243.     //if (mostar.DodajPrijavu(zaninIndiraHtml)) {
  244.     //  cout << crt << "PRIJAVA EVIDENTIRANA" << crt;
  245.     //  zaninIndiraHtml.Ispis();
  246.     //}
  247.     //int brojPolaznika = 0;
  248.     ////vraca niz polaznika koji nisu izmirili uplate
  249.     //Polaznik * polazniciDugovanja = mostar.PolazniciDugovanja(brojPolaznika);
  250.  
  251.     //cout << "Pronadjeno " << brojPolaznika << " polaznika koji nisu kompletirali svoje uplate --->>> ";
  252.     //for (size_t i = 0; i < brojPolaznika; i++)
  253.     //  polazniciDugovanja[i].Ispis();
  254.  
  255.     ////PretragaRekurzivno - rekurzivna funkcija pronalazi najveci iznos duga ostvarenog u odredjenom edukacijskom centru
  256.     //cout << "Najveci dug iznosi " << PretragaRekurzivno(/*potrebni parametri*/) << endl;
  257.     ////ispisuje sve informacije o edukacijskom centru. prije ispisa sortirati sve prijave po visini dugovanja njenih polaznika
  258.     //mostar.Ispis();
  259.  
  260.     //izvrsiti potrebne dealokacije
  261.     system("pause");
  262. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement