Advertisement
neogz

Klase, ucesnik i seminar v1

Feb 2nd, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.38 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. char crt[] = { "----------------------------------------\n" };
  4. class Ucesnik {
  5.     int _id;
  6.     char * _imePrezime;
  7.     char * _datumPrijave;
  8. public:
  9.     // defaultni konstruktor
  10.     Ucesnik(){
  11.         _id = 0;
  12.         _imePrezime = new char[3];
  13.         strcpy_s(_imePrezime, 3, "--");
  14.         _datumPrijave = new char[3];
  15.         strcpy_s(_datumPrijave, 3,"--");
  16.     }
  17.     // konstruktor
  18.     Ucesnik(int id, char * imePrezime, char * datumPrijave){
  19.         _id = id;
  20.         int vel = strlen(imePrezime) + 1;
  21.         _imePrezime = new char[vel];
  22.         strcpy_s(_imePrezime, vel, imePrezime);
  23.        
  24.         vel = strlen(datumPrijave) + 1;
  25.         _datumPrijave = new char[vel];
  26.         strcpy_s(_datumPrijave, vel, datumPrijave);
  27.     }
  28.     // konstruktor kopije
  29.     Ucesnik(Ucesnik & org){
  30.         _id = org._id;
  31.         int vel = strlen(org._imePrezime) + 1;
  32.         _imePrezime = new char[vel];
  33.         strcpy_s(_imePrezime, vel,org._imePrezime);
  34.  
  35.         vel = strlen(org._datumPrijave) + 1;
  36.         _datumPrijave = new char[vel];
  37.         strcpy_s(_datumPrijave, vel, org._datumPrijave);
  38.     }
  39.     // destruktor
  40.     ~Ucesnik(){
  41.         delete[]_imePrezime;
  42.         delete[]_datumPrijave;
  43.         _imePrezime = nullptr;
  44.         _datumPrijave = nullptr;
  45.     }
  46.     // geteri
  47.     int getBrojIndexa()const{
  48.         return _id;
  49.     }
  50.  
  51.     friend ostream & operator <<(ostream & COUT, Ucesnik & org);
  52.     Ucesnik & operator = (Ucesnik & org){
  53.         if (this!=&org){
  54.             _id = org._id;
  55.             delete[] _imePrezime;  
  56.             _imePrezime = nullptr;
  57.             int vel = strlen(org._imePrezime) + 1;
  58.             _imePrezime = new char[vel];
  59.             strcpy_s(_imePrezime, vel, org._imePrezime);
  60.  
  61.             delete[] _datumPrijave;
  62.             _datumPrijave = nullptr;
  63.             vel = strlen(org._datumPrijave) + 1;
  64.             _datumPrijave = new char[vel];
  65.             strcpy_s(_datumPrijave, vel, org._datumPrijave);
  66.         }
  67.         return *this;
  68.     }
  69.     bool operator == (Ucesnik & org){
  70.         if (this == &org) return true;
  71.         if (_id == org._id) return true;
  72.         return false;
  73.     }
  74. };
  75. class Seminar {
  76.     char * _periodOdrzavanja;
  77.     char _mjestoOdrzavanja[50];
  78.     int _kotizacija;
  79.     int _brojPrijavljenih;
  80.     Ucesnik _prijavljeni[100];
  81. public:
  82.     // konstruktor + defaultni
  83.     Seminar(char * periodOdrzavanja = "------", char * mjestoOdrzavanja = "------", int kotizacija = 0){
  84.         int vel = strlen(periodOdrzavanja) + 1;
  85.         _periodOdrzavanja = new char[vel];
  86.         strcpy_s(_periodOdrzavanja, vel, periodOdrzavanja);
  87.  
  88.         strcpy_s(_mjestoOdrzavanja, 50, mjestoOdrzavanja);
  89.  
  90.         _kotizacija = kotizacija;
  91.         _brojPrijavljenih = 0;
  92.     }
  93.     // konstruktor kopije
  94.     Seminar(Seminar & org){
  95.         int vel = strlen(org._periodOdrzavanja) + 1;
  96.         _periodOdrzavanja = new char[vel];
  97.         strcpy_s(_periodOdrzavanja, vel, org._periodOdrzavanja);
  98.  
  99.         strcpy_s(_mjestoOdrzavanja, 50, org._mjestoOdrzavanja);
  100.  
  101.         _kotizacija = org._kotizacija;
  102.         _brojPrijavljenih = 0;
  103.     }
  104.     // destruktor
  105.     ~Seminar(){
  106.         delete[]_periodOdrzavanja;
  107.         _periodOdrzavanja = nullptr;
  108.     }
  109.     // dodaj ucesnika ako nisu sva mjesta zauzeta i ako nije vec prijavljen
  110.     Seminar & operator += (Ucesnik & dodajme){
  111.         if (_brojPrijavljenih < 100){
  112.  
  113.             for (int i = 0; i < _brojPrijavljenih; i++){
  114.                 if (_prijavljeni[_brojPrijavljenih].getBrojIndexa() == dodajme.getBrojIndexa())
  115.                     return *this;
  116.             }
  117.  
  118.             _prijavljeni[_brojPrijavljenih] = dodajme;
  119.             _brojPrijavljenih++;
  120.         }
  121.         return *this;
  122.     }
  123.  
  124.     // fukncija otkazuje ucesnika na osnovu primljenog idbroja
  125.     void otkaziUcesnika(int id){
  126.         for (int i = 0; i < _brojPrijavljenih; i++){
  127.             if (_prijavljeni[i].getBrojIndexa() == id){
  128.                
  129.                 for (int j = i; j < _brojPrijavljenih-1; j++){
  130.                     _prijavljeni[j] = _prijavljeni[j+1];
  131.                 }
  132.  
  133.                 cout << "Ucesnik sa ID brojem: " << id << " je uspjesno otkazan."<<endl;
  134.                 _brojPrijavljenih--;
  135.             }
  136.         }
  137.     }
  138.     // funkcija treba da sumu svih izvrsenih uplata za seminar
  139.     int getSumUplate(){
  140.         return _brojPrijavljenih * _kotizacija;
  141.     }
  142.  
  143.     //operator <<
  144.     friend ostream & operator << (ostream & COUT, Seminar & seminar);
  145.  
  146. };
  147.  
  148.  
  149.  
  150. ostream & operator <<(ostream & COUT, Ucesnik & org){
  151.     COUT << org._id << " " << org._imePrezime << " " << org._datumPrijave << endl;
  152.     return COUT;
  153. }
  154. ostream & operator << (ostream & COUT, Seminar & seminar){
  155.     COUT << crt;
  156.     COUT << "Period odrzavanja: " << seminar._periodOdrzavanja << endl;
  157.     COUT << "Mjesto odrzavanja: " << seminar._mjestoOdrzavanja << endl;
  158.     COUT << "Kotizacija: " << seminar._kotizacija << endl;
  159.     COUT << "Broj prijavljenih: " << seminar._brojPrijavljenih << endl;
  160.     if (seminar._brojPrijavljenih != 0) COUT << " :: LISTA PRIJAVLJENIH :: " << endl;
  161.     for (int i = 0; i < seminar._brojPrijavljenih; i++){
  162.         cout <<seminar._prijavljeni[i];
  163.     }
  164.     COUT << crt;
  165.     return COUT;
  166. }
  167. int main(){
  168.  
  169.     // klasa ucesnik i testiranje operatora <<i =
  170.     Ucesnik a;
  171.     Ucesnik b(1, "Nedim Fejzic", "10.04.1995");
  172.     Ucesnik c(2, "Leme Kum", "1.1.1900");
  173.     Ucesnik d(3, "Faja Sadrvan", "1.1.1901");
  174.     Ucesnik e(4, "Nesam Skolovala", "1.1.1902");
  175.     // skinuti komentar ispod
  176.     /*
  177.         cout << a << b;
  178.     cout << "a = b" << endl;
  179.     a = b;
  180.     cout << a << b;
  181.     */
  182.  
  183.     // klasa seminar, dodati ucesnike na seminar, ispisati seminar, ukloniti ucesnika iz seminara, dobiti sumu uplata
  184.     Seminar s("10.04.2015","Gorazde",50);
  185.    
  186.     s += b;
  187.     s += c;
  188.     s += d;
  189.     s += e;
  190.     cout << s;
  191.     cout << s.getSumUplate()<<endl;
  192.  
  193.     // skinuti komentar ispod - otkazivanje rezervacije
  194.     /*
  195.     cout << "Kojeg korisnika zelite otkazati: ID BROJ?:" << endl;
  196.     int ide;
  197.     cin >> ide;
  198.     s.otkaziUcesnika(ide);
  199.     cout << s;
  200.     cout << s.getSumUplate()<<endl;
  201.     */
  202.  
  203.  
  204.  
  205.     system("pause >null");
  206.     return 0;
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement