asd

<p>#include &lt;iostream&gt;<br /> #include &lt;vector&gt;<br /> #include &lt;string&gt;</p> <p>using namespace std;</p> <p><br /> class Trener {<br /> private:<br /> &nbsp;&nbsp; &nbsp;string ime;<br /> &nbsp;&nbsp; &nbsp;string prezime;<br /> &nbsp;&nbsp; &nbsp;string adresa;<br /> public:<br /> &nbsp;&nbsp; &nbsp;Trener() : ime(&quot;ime&quot;), prezime(&quot;prezime&quot;), adresa(&quot;adresa&quot;){}<br /> &nbsp;&nbsp; &nbsp;Trener(string _ime, string _prezime, string _adresa) {<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ime = _ime;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;prezime = _prezime;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;adresa = _adresa;<br /> &nbsp;&nbsp; &nbsp;}<br /> };</p> <p><br /> namespace ClanKluba {<br /> &nbsp;&nbsp; &nbsp;class Igrac {<br /> &nbsp;&nbsp; &nbsp;private:&nbsp;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;string ime;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;string prezime;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;int cijena;<br /> &nbsp;&nbsp; &nbsp;public:<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Igrac() = default;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Igrac(string _ime, string _prezime, int _cijena) {}<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;string getIme() const { return ime; }<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;string getPrezime()const { return prezime; }<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;int getCijena() const { return cijena; }<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;void setCijena(int novaCijena);<br /> &nbsp;&nbsp; &nbsp;};</p> <p>&nbsp;&nbsp; &nbsp;Igrac::Igrac(string _ime, string _prezime, int _cijena) {<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ime = _ime;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;prezime = _prezime;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cijena = _cijena;<br /> &nbsp;&nbsp; &nbsp;}<br /> &nbsp;&nbsp; &nbsp;void Igrac::setCijena(int novaCijena) {<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (novaCijena &lt; 0)<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cout &lt;&lt; &quot;nemre bit manje od 0&quot;;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;else<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cijena = novaCijena;<br /> &nbsp;&nbsp; &nbsp;}<br /> }</p> <p>class Klub {<br /> public:<br /> &nbsp;&nbsp; &nbsp;string naziv;<br /> &nbsp;&nbsp; &nbsp;string adresa;<br /> &nbsp;&nbsp; &nbsp;Trener trener;<br /> &nbsp;&nbsp; &nbsp;vector &lt;ClanKluba::Igrac*&gt; popisIgraca;</p> <p><br /> &nbsp;&nbsp; &nbsp;Klub(string _naziv, string _adresa, Trener _trener) {<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;naziv = _naziv;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;adresa = _adresa;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;trener = _trener;<br /> &nbsp;&nbsp; &nbsp;}</p> <p><br /> &nbsp;&nbsp; &nbsp;</p> <p>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;</p> <p>&nbsp;&nbsp; &nbsp;~Klub() {<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;for (int i = 0; i &lt; popisIgraca.size(); i++) {<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;delete popisIgraca[i];<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; popisIgraca.clear();<br /> &nbsp;&nbsp; &nbsp;}<br /> };</p> <p>int main() {</p> <p>&nbsp;&nbsp; &nbsp;Trener trener(&quot;marko&quot;, &quot;markovic&quot;, &quot;ulica 1&quot;);<br /> &nbsp;&nbsp; &nbsp;Klub klub(&quot;klub1&quot;, &quot;gradkluba&quot;, trener);<br /> &nbsp;&nbsp; &nbsp;ClanKluba::Igrac* igrac1 = new ClanKluba::Igrac(&quot;ivan&quot;, &quot;pavao&quot;, 123);<br /> &nbsp;&nbsp; &nbsp;ClanKluba::Igrac* igrac2 = new ClanKluba::Igrac(&quot;pero&quot;, &quot;peric&quot;, 2322);</p> <p>&nbsp;&nbsp; &nbsp;klub.dodajIgraca(igrac1);<br /> &nbsp;&nbsp; &nbsp;klub.dodajIgraca(igrac2);</p> <p>&nbsp;&nbsp; &nbsp;return 0;<br /> }</p> <p>&nbsp;</p> <p>class Zaposlenik {<br /> private:<br /> &nbsp; &nbsp; string ime;<br /> &nbsp; &nbsp; string prezime;<br /> &nbsp; &nbsp; int godineRadnogStaza;</p> <p>public:<br /> &nbsp; &nbsp; Zaposlenik(const string&amp; ime, const string&amp; prezime, int godineRadnogStaza); //konstruktor</p> <p>&nbsp; &nbsp; void postaviGodineRadnogStaza(int godineRadnogStaza); &nbsp;// Getteri i setteri za podatke o zaposleniku<br /> &nbsp; &nbsp; int dohvatiGodineRadnogStaza() const;<br /> };</p> <p>class Tvrtka {<br /> private:<br /> &nbsp; &nbsp; string OIB;<br /> &nbsp; &nbsp; string naziv;<br /> &nbsp; &nbsp; string adresa;<br /> &nbsp; &nbsp; vector&lt;Zaposlenik*&gt; zaposlenici; // Popis zaposlenika</p> <p>public:<br /> &nbsp; &nbsp; Tvrtka(const string&amp; OIB, const string&amp; naziv, const string&amp; adresa); //konstruktor</p> <p>&nbsp; &nbsp; Tvrtka::~Tvrtka(); &nbsp;// Destruktor</p> <p>&nbsp; &nbsp; Tvrtka(const Tvrtka&amp; other); &nbsp;// Kopirni konstruktor</p> <p>&nbsp; &nbsp; Tvrtka&amp; operator=(const Tvrtka&amp; other); &nbsp;// Operator pridruživanja sa dubokim kopiranjem</p> <p>&nbsp; &nbsp; Tvrtka&amp; operator=(Tvrtka&amp;&amp; other); &nbsp;// Operator pridruživanja sa semantikom prijenosa</p> <p>&nbsp; &nbsp; void dodajZaposlenika(Zaposlenik* zaposlenik); // Dodavanje zaposlenika u tvrtku</p> <p>&nbsp; &nbsp; int brojZaposlenika() const; // Dohvat broja zaposlenika u tvrtki<br /> };</p> <p>Zaposlenik::Zaposlenik(const string&amp; ime, const string&amp; prezime, int godineRadnogStaza)<br /> {<br /> }</p> <p>// B DIO ZADATKA!!! &nbsp;Setter za postavljanje godina radnog staža<br /> void Zaposlenik::postaviGodineRadnogStaza(int godineRadnogStaza) {<br /> &nbsp; &nbsp; if (godineRadnogStaza &gt;= 0 &amp;&amp; godineRadnogStaza &lt;= 35) {<br /> &nbsp; &nbsp; &nbsp; &nbsp; this-&gt;godineRadnogStaza = godineRadnogStaza;<br /> &nbsp; &nbsp; }<br /> }</p> <p>// Getter za dohvat godina radnog staža<br /> int Zaposlenik::dohvatiGodineRadnogStaza() const {<br /> &nbsp; &nbsp; return godineRadnogStaza;<br /> }</p> <p>//C DIO ZADATKA</p> <p>Tvrtka::Tvrtka(const string&amp; OIB, const string&amp; naziv, const string&amp; adresa)<br /> {<br /> }</p> <p>Tvrtka::Tvrtka(const Tvrtka&amp; other) { &nbsp; &nbsp; &nbsp;// Kopirni konstruktor<br /> &nbsp; &nbsp; OIB = other.OIB;<br /> &nbsp; &nbsp; naziv = other.naziv;<br /> &nbsp; &nbsp; adresa = other.adresa;</p> <p>&nbsp; &nbsp; for (Zaposlenik* zaposlenik : other.zaposlenici) { &nbsp; // Kopiranje zaposlenika<br /> &nbsp; &nbsp; &nbsp; &nbsp; zaposlenici.push_back(new Zaposlenik(*zaposlenik));<br /> &nbsp; &nbsp; }<br /> }</p> <p>int main() { &nbsp;// Demonstracija kopirnog konstruktora u funkciji main:<br /> &nbsp; &nbsp; Tvrtka originalnaTvrtka(&quot;123456789&quot;, &quot;Originalna tvrtka&quot;, &quot;Adresa 1&quot;); &nbsp; // Kreiranje originalne tvrtke</p> <p>&nbsp; &nbsp; Zaposlenik* zaposlenik1 = new Zaposlenik(&quot;Ivan&quot;, &quot;Ivić&quot;, 5); // Dodavanje zaposlenika u originalnu tvrtku<br /> &nbsp; &nbsp; originalnaTvrtka.dodajZaposlenika(zaposlenik1);<br /> &nbsp; &nbsp; Zaposlenik* zaposlenik2 = new Zaposlenik(&quot;Ana&quot;, &quot;Anić&quot;, 10);<br /> &nbsp; &nbsp; originalnaTvrtka.dodajZaposlenika(zaposlenik2);</p> <p>&nbsp; &nbsp; Tvrtka novaTvrtka = originalnaTvrtka; // Kopiranje originalne tvrtke u novu tvrtku</p> <p>&nbsp; &nbsp; cout &lt;&lt; &quot;Broj zaposlenika u originalnoj tvrtki: &quot; &lt;&lt; originalnaTvrtka.brojZaposlenika() &lt;&lt; endl; &nbsp;// Ispis broja zaposlenika u originalnoj i novoj tvrtki<br /> &nbsp; &nbsp; cout &lt;&lt; &quot;Broj zaposlenika u novoj tvrtki: &quot; &lt;&lt; novaTvrtka.brojZaposlenika() &lt;&lt; endl;</p> <p>&nbsp; &nbsp; return 0;<br /> }</p> <p>//D DIO ZADATKA!!!!!!!!!!</p> <p>Tvrtka&amp; Tvrtka::operator=(const Tvrtka&amp; other) { // Operator pridruživanja sa dubokim kopiranjem<br /> &nbsp; &nbsp; if (this == &amp;other) {<br /> &nbsp; &nbsp; &nbsp; &nbsp; return *this;<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; for (Zaposlenik* zaposlenik : zaposlenici) { &nbsp; // Dealociranje postojećih zaposlenika<br /> &nbsp; &nbsp; &nbsp; &nbsp; delete zaposlenik;<br /> &nbsp; &nbsp; }<br /> &nbsp; &nbsp; zaposlenici.clear();</p> <p>&nbsp; &nbsp; OIB = other.OIB; &nbsp; &nbsp;// Kopiranje podataka iz other<br /> &nbsp; &nbsp; naziv = other.naziv;<br /> &nbsp; &nbsp; adresa = other.adresa;</p> <p>&nbsp; &nbsp; for (Zaposlenik* zaposlenik : other.zaposlenici) { &nbsp; // Kopiranje zaposlenika<br /> &nbsp; &nbsp; &nbsp; &nbsp; zaposlenici.push_back(new Zaposlenik(*zaposlenik));<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; return *this;<br /> }</p> <p>//E DIO ZADATKAAAAAAAAAAAAAAAA</p> <p>Tvrtka&amp; Tvrtka::operator=(Tvrtka&amp;&amp; other) { &nbsp; // Operator pridruživanja sa semantikom prijenosa<br /> &nbsp; &nbsp; if (this == &amp;other) {<br /> &nbsp; &nbsp; &nbsp; &nbsp; return *this;<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; for (Zaposlenik* zaposlenik : zaposlenici) { &nbsp;// Dealociranje postojećih zaposlenika<br /> &nbsp; &nbsp; &nbsp; &nbsp; delete zaposlenik; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// DESTRUKTORRRRRRRRRRRRR<br /> &nbsp; &nbsp; }<br /> &nbsp; &nbsp; zaposlenici.clear();</p> <p>&nbsp; &nbsp; OIB = move(other.OIB); &nbsp; // Prijenos podataka iz other<br /> &nbsp; &nbsp; naziv = move(other.naziv);<br /> &nbsp; &nbsp; adresa = move(other.adresa);<br /> &nbsp; &nbsp; zaposlenici = move(other.zaposlenici);</p> <p>&nbsp; &nbsp; return *this;<br /> }</p>