Advertisement
Guest User

prIIIArtikli2016Parcijala

a guest
Jan 17th, 2017
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.27 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. char * crt = "\n--------------------------------\n";
  6. class KupljeniArtikal {
  7.     char * _naziv;
  8.     float _cijena;
  9.     int _kolicina;
  10.     //konstruktor, destruktor i potrebne funkcije
  11. public:
  12.     KupljeniArtikal(char * naziv = "---", float cijena = 0.0)
  13.     {
  14.         _naziv = new char[strlen(naziv) + 1];
  15.         strcpy_s(_naziv, strlen(naziv) + 1, naziv);
  16.         _cijena = cijena;
  17.         _kolicina = 1;
  18.     }
  19.  
  20.     ~KupljeniArtikal()
  21.     {
  22.         delete[]_naziv;
  23.         _naziv = nullptr;
  24.     }
  25.  
  26.     int GetKolicina() { return _kolicina; }
  27.     float GetCijena() {return _cijena;}
  28.  
  29.     KupljeniArtikal & operator+=(float cijena) { _cijena += cijena; return *this; }
  30.     KupljeniArtikal & operator++() { _kolicina++; return *this; }
  31.     KupljeniArtikal & operator=(const KupljeniArtikal & artikal)
  32.     {
  33.         if (this == &artikal)
  34.             return *this;
  35.  
  36.         delete[]_naziv;
  37.         _naziv = new char[strlen(artikal._naziv) + 1];
  38.         strcpy_s(_naziv, strlen(artikal._naziv) + 1, artikal._naziv);
  39.         _kolicina = artikal._kolicina;
  40.         _cijena = artikal._cijena;
  41.         return *this;
  42.     }
  43.     bool operator==(const KupljeniArtikal & artikal)
  44.     {
  45.         if (strcmp(_naziv, artikal._naziv) == 0)
  46.             return true;
  47.         return false;
  48.     }
  49.  
  50.     friend ostream & operator<<(ostream & cout, const KupljeniArtikal & artikal)
  51.     {
  52.         cout << artikal._naziv << "\t " << artikal._cijena << "\t " << artikal._kolicina << "\t " << artikal._cijena * artikal._kolicina << " BAM";
  53.         return cout;
  54.     }
  55.  
  56.     bool operator>(float cijena)
  57.     {
  58.         if (_cijena * _kolicina > cijena)
  59.             return true;
  60.         return false;
  61.     }
  62.  
  63. };
  64. class Racun {
  65.     static int _brojacRacuna;
  66.     const int _brojRacuna; //brojevi racuna krecu od 1
  67.     KupljeniArtikal * _artikli; //niz povecavamo prilikom svakog dodavanja artikla
  68.     int _trenutno;
  69. public:
  70.     Racun() : _brojRacuna(_brojacRacuna++)
  71.     {
  72.         _artikli = nullptr;
  73.         _trenutno = 0;
  74.     }
  75.    
  76.     ~Racun()
  77.     {
  78.         delete[]_artikli;
  79.         _artikli = nullptr;
  80.     }
  81.  
  82.     Racun & operator+=(KupljeniArtikal & artikal)
  83.     {
  84.         for (int i = 0; i < _trenutno; i++)
  85.             if (_artikli[i] == artikal)
  86.             {
  87.                 for (int j = 0; j < artikal.GetKolicina(); j++)
  88.                     ++_artikli[i];
  89.                 return *this;
  90.             }
  91.         KupljeniArtikal * temp = new KupljeniArtikal[_trenutno + 1];
  92.         for (int i = 0; i < _trenutno; i++)
  93.             temp[i] = _artikli[i];
  94.         temp[_trenutno] = artikal;
  95.         delete[]_artikli;
  96.         _artikli = temp;
  97.         _trenutno++;
  98.     }
  99.  
  100.     friend ostream & operator<<(ostream & cout, const Racun & racun)
  101.     {
  102.         float total = 0;
  103.         cout << crt << "\t RACUN :: " << racun._brojRacuna << crt;
  104.         for (int i = 0; i < racun._trenutno; i++)
  105.         {
  106.             cout << racun._artikli[i] << endl;
  107.             total += racun._artikli[i].GetCijena() * racun._artikli[i].GetKolicina();
  108.         }
  109.         cout << crt << "TOTAL:\t \t \t " << total << " BAM" << crt;
  110.         return cout;
  111.     }
  112.  
  113.     KupljeniArtikal * operator()(float cijena, int & brojPronadjenih)
  114.     {
  115.         for (int i = 0; i < _trenutno; i++)
  116.             if (_artikli[i] > cijena)
  117.                 brojPronadjenih++;
  118.         KupljeniArtikal * temp = new KupljeniArtikal[brojPronadjenih];
  119.         int j = 0;
  120.         for(int i = 0; i < _trenutno; i++)
  121.             if (_artikli[i] > cijena)
  122.             {
  123.                 temp[j] = _artikli[i];
  124.                 j++;
  125.             }
  126.         return temp;
  127.     }
  128.  
  129. };
  130.  
  131. int Racun::_brojacRacuna = 1;
  132.  
  133. void main() {
  134.     KupljeniArtikal cokolada("Milka", 2.29);//naziv i cijena artikla
  135.     KupljeniArtikal sok("Jucy", 1.38);
  136.     KupljeniArtikal cigarete("Drina", 4.32);
  137.     KupljeniArtikal mlijeko("Meggle", 2.87);
  138.     cokolada += 0.27;//povecavamo cijenu artikla, sada je cijena 2,56BAM
  139.     ++cokolada;//povecavamo kolicinu artikla, sada je kolicina 2
  140.     ++sok;
  141.     Racun racun;
  142.     racun += cokolada;//dodajemo 2 cokolade po cijeni od 2,56BAM
  143.     racun += sok;
  144.     racun += sok;//ako vise puta pokusamo dodati isti artikal, treba da se uveca samo
  145.     //njegova kolicina na racunu tj.artikli se ne smiju duplirati
  146.     racun += cigarete;
  147.     racun += mlijeko;
  148.     cout << racun << endl; // ispis racuna mozete vidjeti na slici.
  149.     int brojPronadjenih = 0;
  150.     float ukupnaCijena = 5.10;
  151.     cout << crt << "Artikli skuplji od >> " << ukupnaCijena << crt;
  152.     //treba da vrati sve artikle cija je ukupna cijena na racunu (cijena * kolicina)
  153.     //veca od poslane tj. 5.10BAM
  154.     KupljeniArtikal * artikli = racun(ukupnaCijena, brojPronadjenih);
  155.     if (artikli != nullptr) {
  156.         for (size_t i = 0; i < brojPronadjenih; i++) {
  157.             cout << artikli[i] << endl;
  158.         }
  159.     }
  160.     delete[] artikli;
  161.     artikli = nullptr;
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement