Stvarno bih molio bar nekakvu pomoć oko ova dva zadatka jel stvarno nemam ideju ni kako da krenem :(
Prvi zadatak:
Napravite sljedeću hijerarhiju klasa s pripadnim funkcijama
duljini u kilometrima – int), ukupno vrijeme plivanja (int) i ime plivaca (string).
Funkcije ime, polozaj i vrijeme vraćaju ime plivača, položaj plivača i ukupno
vrijeme plivanja.
Napišite i funkciju simulirajUtrku(double sati, int brojUtrke) gdje varijabla sati
predstavlja vrijeme plivanja, a brojUtrke predstavlja redni broj utrke. Jedna utrka
ima pravilo da svakih pola sata sa starta kreće jedan par (Sipa, Tuna). Također,
napišite i funkciju rezultatUtrke(int brojUtrke) koja ispisuje poredak članova nakon
simulacije utrke pod rednim brojem brojUtrke, ispisujući imena plivača, prijeđene
kilometre te vrijeme plivanja. Imena plivača u simulirajUtrku trebaju biti
("Sipa1-brojUtrke", "Tuna1-brojUtrke"), ("Sipa2-brojUtrke", "Tuna2-brojUtrke"), itd.
(rezultatUtrke sigurno će se pozivati nakon poziva simulirajUtrku)
Klasa Plivac ima još i static funkciju sviPlivaci koja ispisuje sve Plivace koji su
sudjelovali u barem jednoj utrci (sortirane po utrkama pa po rezultatima u utrci).
Brzina kojom plivaju sipe iznosi 20km/h, dok tuna pliva brzinom 30km/h.
Napravite i jednu main funkciju koja testira gore spomenute funkcije te simulira
dvije utrke duljine 4, odnosno 6 sati ispisujići rezultat utrka na ekran.
Sakrijte “od javnosti” sve podatke koje možete i izbjegavajte dupliciranje dijelova
koda – u protivnom možete izgubiti bodove! Zabranjeno je koristiti globalne
varijable! Potrebno je pobrinuti se da se const koristi svugdje gdje je moguće te da
se reference koriste kod prijenosa klasa (Plivac/Tuna/Sipa) kao parametara u
funkcije (ako imate takve funkcije).
---------------------------------------------------------------------------------------------------------------
Drugi zadatak:
Ord je izraz oblika w+w+...+w+n (k znakova ‘w’), gdje su k i n prirodni brojevi (0 smatramo
prirodnim brojem, za k=0 dobije se broj n). Ordove označavamo sa a,b,... Napišite klasu Ord sa
sljedećim konstruktorima i operatorima:
● Ord b(k,n): stvara w+w+...+w+n, s k znakova ‘w’.
● Ord a(‘w’) (smijete pretpostaviti da će slovo uvijek biti ‘w’): stvara Ord w(=w+0).
● konstruktor bez parametara: stvara 0.
● konverzija (ulaganje) prirodnih brojeva u ordove
● a<b (usporedba, kao za set<ord>): onaj ord koji ima više ‘w’ova je veći. Ako imaju
jednako, onaj s većim prirodnim brojem na kraju je veći.
● a==b: ordovi su jednaki ako imaju jednako mnogo ‘w’ova, i završavaju istim brojem.
● a+b (nije komutativno!): konkatenacija, s tim da je n+w=w. Npr. w+2+w+w+5=w+w+w+5,
ali w+2+5=w+7. Mora raditi i npr. 5+a i b+3.
● a*m (m je prirodni broj): uzastopno zbrajanje: npr. (w+2)*3=w+2+w+2+w+2=w+w+w+2.
● m*a: po distributivnosti, s tim da je m*w=w za m>0 (0*w=0). Npr. 4*(w+w+3)=w+w+12.
● a++: pokrata za a=a+1 (dakle vraća novi a!).
● ++a: dodaje jedan w na početak od a. Vraća novi a.
● cout<<a: ispis u gornjem obliku, s tim da se w+...+w+0 ispisuje kao w+...+w.
● konverzija u bool: 0 je lažna, svi ostali (uključivo ‘w’) su istiniti.
Ne morate pisati const kvalifikatore (umjesto const& možete prenositi po vrijednosti), i sve može
biti public (ne trebate friend deklaracije). Omogućite ulančavanje gdje god je to moguće. Napišite
i neki main koji testira bar 2 od gornjih operatora. Intendirani tip od k i n je unsigned, ali možete
pisati i int.
Evo sad cijenim i najmanju pomoć oko ovoga unaprijed hvala =).