Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- char * crt = "\n--------------------------------\n";
- class KupljeniArtikal {
- char * _naziv;
- float _cijena;
- int _kolicina;
- //konstruktor, destruktor i potrebne funkcije
- public:
- KupljeniArtikal(char * naziv = "---", float cijena = 0.0)
- {
- _naziv = new char[strlen(naziv) + 1];
- strcpy_s(_naziv, strlen(naziv) + 1, naziv);
- _cijena = cijena;
- _kolicina = 1;
- }
- ~KupljeniArtikal()
- {
- delete[]_naziv;
- _naziv = nullptr;
- }
- int GetKolicina() { return _kolicina; }
- float GetCijena() {return _cijena;}
- KupljeniArtikal & operator+=(float cijena) { _cijena += cijena; return *this; }
- KupljeniArtikal & operator++() { _kolicina++; return *this; }
- KupljeniArtikal & operator=(const KupljeniArtikal & artikal)
- {
- if (this == &artikal)
- return *this;
- delete[]_naziv;
- _naziv = new char[strlen(artikal._naziv) + 1];
- strcpy_s(_naziv, strlen(artikal._naziv) + 1, artikal._naziv);
- _kolicina = artikal._kolicina;
- _cijena = artikal._cijena;
- return *this;
- }
- bool operator==(const KupljeniArtikal & artikal)
- {
- if (strcmp(_naziv, artikal._naziv) == 0)
- return true;
- return false;
- }
- friend ostream & operator<<(ostream & cout, const KupljeniArtikal & artikal)
- {
- cout << artikal._naziv << "\t " << artikal._cijena << "\t " << artikal._kolicina << "\t " << artikal._cijena * artikal._kolicina << " BAM";
- return cout;
- }
- bool operator>(float cijena)
- {
- if (_cijena * _kolicina > cijena)
- return true;
- return false;
- }
- };
- class Racun {
- static int _brojacRacuna;
- const int _brojRacuna; //brojevi racuna krecu od 1
- KupljeniArtikal * _artikli; //niz povecavamo prilikom svakog dodavanja artikla
- int _trenutno;
- public:
- Racun() : _brojRacuna(_brojacRacuna++)
- {
- _artikli = nullptr;
- _trenutno = 0;
- }
- ~Racun()
- {
- delete[]_artikli;
- _artikli = nullptr;
- }
- Racun & operator+=(KupljeniArtikal & artikal)
- {
- for (int i = 0; i < _trenutno; i++)
- if (_artikli[i] == artikal)
- {
- for (int j = 0; j < artikal.GetKolicina(); j++)
- ++_artikli[i];
- return *this;
- }
- KupljeniArtikal * temp = new KupljeniArtikal[_trenutno + 1];
- for (int i = 0; i < _trenutno; i++)
- temp[i] = _artikli[i];
- temp[_trenutno] = artikal;
- delete[]_artikli;
- _artikli = temp;
- _trenutno++;
- }
- friend ostream & operator<<(ostream & cout, const Racun & racun)
- {
- float total = 0;
- cout << crt << "\t RACUN :: " << racun._brojRacuna << crt;
- for (int i = 0; i < racun._trenutno; i++)
- {
- cout << racun._artikli[i] << endl;
- total += racun._artikli[i].GetCijena() * racun._artikli[i].GetKolicina();
- }
- cout << crt << "TOTAL:\t \t \t " << total << " BAM" << crt;
- return cout;
- }
- KupljeniArtikal * operator()(float cijena, int & brojPronadjenih)
- {
- for (int i = 0; i < _trenutno; i++)
- if (_artikli[i] > cijena)
- brojPronadjenih++;
- KupljeniArtikal * temp = new KupljeniArtikal[brojPronadjenih];
- int j = 0;
- for(int i = 0; i < _trenutno; i++)
- if (_artikli[i] > cijena)
- {
- temp[j] = _artikli[i];
- j++;
- }
- return temp;
- }
- };
- int Racun::_brojacRacuna = 1;
- void main() {
- KupljeniArtikal cokolada("Milka", 2.29);//naziv i cijena artikla
- KupljeniArtikal sok("Jucy", 1.38);
- KupljeniArtikal cigarete("Drina", 4.32);
- KupljeniArtikal mlijeko("Meggle", 2.87);
- cokolada += 0.27;//povecavamo cijenu artikla, sada je cijena 2,56BAM
- ++cokolada;//povecavamo kolicinu artikla, sada je kolicina 2
- ++sok;
- Racun racun;
- racun += cokolada;//dodajemo 2 cokolade po cijeni od 2,56BAM
- racun += sok;
- racun += sok;//ako vise puta pokusamo dodati isti artikal, treba da se uveca samo
- //njegova kolicina na racunu tj.artikli se ne smiju duplirati
- racun += cigarete;
- racun += mlijeko;
- cout << racun << endl; // ispis racuna mozete vidjeti na slici.
- int brojPronadjenih = 0;
- float ukupnaCijena = 5.10;
- cout << crt << "Artikli skuplji od >> " << ukupnaCijena << crt;
- //treba da vrati sve artikle cija je ukupna cijena na racunu (cijena * kolicina)
- //veca od poslane tj. 5.10BAM
- KupljeniArtikal * artikli = racun(ukupnaCijena, brojPronadjenih);
- if (artikli != nullptr) {
- for (size_t i = 0; i < brojPronadjenih; i++) {
- cout << artikli[i] << endl;
- }
- }
- delete[] artikli;
- artikli = nullptr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement