Napišite razred izdelek, ki bo vseboval lasnosti tipa cena, teza (sta vsebovana razreda) in ime izdelka (string).
Razred cena ima lastnost cena, ter metode setCena, getCena(), getCenaSit() in izpis().
Razred teza ima lastnost teza in statično lastnost skupnaTeza, ter metode setTeza, getTeza(), izpis() in
Statično metodo getSkupnaTeza, ki vrne skupno težo vseh ze ustvarjenih primerkov razreda teza.
Razred Izdelek naj ima se metodi podrazitevProcent(double procent) in cenaNaKg().
Vsem metodam, ki menite da so primerne za konstantne dodajte lastnost const.
Pričujoči glavni programček dopolnite s petimi različnimi izdelki.
(spisal sem ga sam, ker sem ga pozabil dodat, ko sem reševal to nalogo)
Napiši razred A, ki ima:
Napiši razred B, ki ima:
Napišite razred Barva, ki vsebuje:
Napišite razred C, ki vsebuje:
Primerno označite konstantne metode.
V glavnem programu vključite SAMO potrebne datoteke/razrede in demonstrirajte:
Zapišite tudi definicijo razreda (Pravokotnik.h)!
Napiši razred Met, ki ima metode:
Za nalogo morate napisati igrico ‘4 v vrsto’. Igra mora biti napisana v programskem jeziku C++ z MFC! Zahteve za igro so:
- namenjena dvema človeškima igralcema.
- igralca igrata s krogci: vsak igralec ima svojo barvo krogca!
- na začetku naj bo možno izbrati igralca in poljubno barvo za krogec!
- igralno polje mora biti v velikosti 6 vrstic in 7 stolpcev.
- igralno polje naj bo fiksne velikosti.
- celotno polje IN krogci morajo biti izrisani!! (polje, realizirano z gumbi ali slikami ali kako drugače NE šteje!).
- na polju se morajo loviti miškini kliki (tako kot pri igri Križci-Krožci)
- omogočen naj bo izpis obvestil ob zmagi ali porazu ali neodločenem izidu.
- možnost resetiranja med igro (Reset Game).
- grafični vmesnik naj bo preprost in intuitiven za uporabo!
Pravila igre:
- z miško igralca izmenično polnita polje s krogci.
- krogci v stolpcu ‘padajo’.
- igralec zmaga, ko zbere 4 svoje krogce vodoravno ali navpično ali po diagonali.
Po uspešnem seznanjanju z osnovami knjižnice MFC je čas, da spoznamo še nekaj novih grafičnih elementov. Te elemente boste uporabili v preprosti igrici ‘Hitri prsti’. Pri igrici ‘Hitri prsti’ vam naj računalnik naključno izbira znake iz tipkovnice in jih naj izpisuje na pogovorno okno. Naloga za uporabnika pa je pritiskanje tipk, ki ustrezajo izpisanim znakom. Grobe zahteve za igrico so:
- naključen izpis znakov na pogovorno okno (samo črke in številke!)
- znaki se izpisujejo v določenem časovnem intervalu
- igra naj omogoča nastavljanje časovnega intervala z drsnikom (slider)
- prikaz trajanja časovnega intervala s ‘progress bar’
- igra naj ima opcijo Start in Stop
- sproti naj izpisuje število pravilno izbranih znakov, število zgrešenih znakov, število zamujenih znakov in izbran znak.
Pri izdelavi igrice boste potrebovali:
- pridobljeno znanje iz prvih dveh vaj
- MFC razred CProgressCtrl
- MFC razred CSliderCtrl
- MFC razred CEdit
- MFC razred CString
- MFC sporočilo WM_TIMER
Za opise izbranih razredov in njihovih metod uporabite pomoč MSDN.
Napišite program (npr. v C++), ki bo kodiral in dekodiral znake abecede Unicode v kodiranju UTF-8.
Znakov iz Unicode, ki jih UTF-8 kodira, je 1114111, tj. 10FFFF (hex), oz. max. 128 bitov. Pri tem kodi 0xFF in 0xFE nista dovoljeni in ob dekodiranju takšne kode izpišite opozorilo o napaki.
Predstavitev UTF-8 kode:
1) V kolikor je prvi bit 0, sledi sedem bitov za kodo (tj. enako prvim 128 kodam iz ASCII).
2) V kolikor je prvi bit 1, pomeni število vodilnih bitov 1 do prvega bita 0, dolžino kode v bajtih. Nato se kodirajo bolj obteženi biti kode, šele nato manj obteženi del, po spodnji tabeli:
| Unicode | Bajt 1 | Bajt 2 | Bajt 3 | Bajt 4 | Primer |
|---|---|---|---|---|---|
U+0000–U+007F |
0xxxxxxx |
‘$’ U+0024→ 00100100→ 0x24 |
|||
U+0080–U+07FF |
110yyyxx |
10xxxxxx |
‘¢’ U+00A2→ 11000010,10100010→ 0xC2,0xA2 |
||
U+0800–U+FFFF |
1110yyyy |
10yyyyxx |
10xxxxxx |
‘€’ U+20AC→ 11100010,10000010,10101100→ 0xE2,0x82,0xAC |
|
U+10000–U+10FFFF |
11110zzz |
10zzyyyy |
10yyyyxx |
10xxxxxx |
U+024B62→ 11110000,10100100,10101101,10100010→ 0xF0,0xA4,0xAD,0xA2 |
PRIMER (vnos črke v desetiškem številskem sestavu, izpis kode v binarnem)
Kodiranje
Vpišite Unicode znak: 65
UTF-8 koda Unicode je: 01000001
Dekodiranje
Vpišite UFT-8 kodo: 01000001
Koda predstavlja znak št.: 65
Implementirajte vsebnostni algoritem točka-mnogokotnik z računanjem kotov.
Vhod predstavljata mnogokotnik, ki ne vsebuje lukenj, in točka p, za katero preverjamo vsebnost.
Izhod algoritma nam pove:
- ali točka leži v notranjosti mnogokotnika,
- ali točka leži zunaj mnogokotnika,
- ali pa točka leži na mnogokotniku (bodisi na robu bodisi na oglišču).
Algoritem poteka tako, da potegnemo poltrak od p do vsakega oglišča mnogokotnika. Nato izračunamo kote med vsakim parom poltrakov, kote pa seštevamo. Če je vsota vseh kotov enaka 2pi , je točka v notranjosti. Če je vsota kotov enaka 0, leži točka zunaj mnogokotnika. Za preverjanje enakosti uporabite toleranco epsilon.
Robni primeri:
- točka p leži na točki mnogokotnika,
- točka p leži na robu mnogokotnika.
Več o algoritmu najdete v knjigi Algoritmi računalniške geometrije (Žalik).
Naloga je vredna 4 točke.