You are on page 1of 6

Univerzitet u Sarajevu Rok za slanje zadaće:

Elektrotehnički fakultet Sarajevo 8. 11. 2018. (četvrtak)


Osnove računarstva

Zadaća 1
Zadaća nosi 2 boda, a sastoji se od 4 zadatka pri čemu svaki nosi 0,5 bodova. Zadaci će biti bodovani proporcionalno broju uspješnih testova.
Oblasti zadaće su: osnove programiranja u C-u, tipovi podataka u C-u, ulaz i izlaz, uslovi i grananja, petlje (predavanja 01-05, tutorijali 1-3,
skripta: poglavlja 1, 2, 4).

Važna napomena: Ovaj dokument će možda biti mijenjan radi popravljanja grešaka.
Koristite najnoviju verziju! Na dnu dokumenta nalaziće se dnevnik izmjena.

1. Tri drugarice Anja, Elma i Una odlučile su za vikend da idu u neki grad u kojem je lijepo
vrijeme. Problem je što se njih tri ne slažu oko toga šta je tačno "lijepo vrijeme": Anja voli sunce
i snijeg ali ne voli kišu, Elma ne voli kada je vrlo vruće niti vrlo hladno, a Una ne voli padavine
generalno i ne voli kad je vrijeme "onako".

Napravite program koji će drugaricama pomoći da izaberu da li će ići u Sarajevo, Mostar ili
Bihać. Najprije je potrebno unijeti vremensku prognozu za svaki od ova tri grada, i to u vidu
temperature u °C i podatka da li se predviđaju padavine ili ne (ako ne onda pretpostavljamo da će
biti sunčano). Ako je temperatura veća od 0°C, padavina je kiša, a u suprotnom padavina je
snijeg. Doživljaj toplote je dat u tabeli:
● >30°C - vrlo vruće
● 20-30°C - vruće
● 5-20°C - onako
● -5-5°C - hladno
● <-5°C - vrlo hladno

Ako ima više gradova u kojima vrijeme odgovara sve tri drugarice, treba ispisati najbliži
(drugaricama je najbliže Sarajevo, zatim Mostar i na kraju Bihać). Poruka treba glasiti npr.
"Drugarice idu u Mostar." Ako niti jedan grad ne odgovara svim drugaricama, treba ispisati
najbliži grad u koji mogu ići barem dvije od tri drugarice npr. "Elma i Una mogu u Bihac."
(imena treba poredati abecednim redom). Ako ni takav grad ne postoji, onda treba ispisati "Ne
odgovara niti jedan grad."

Primjer ulaza i izlaza:


Unesite prognozu za Sarajevo:
Temperatura: 25
Padavine (D/N): k
Pogresan unos.
Padavine (D/N): d
Unesite prognozu za Mostar:
Temperatura: 29
Padavine (D/N): N
Unesite prognozu za Bihac:
Temperatura: 20
Padavine (D/N): N
Drugarice idu u Mostar.

Napomena: Na upit "Padavine (D/N):" dozvoljeno je unijeti veliko ili malo slovo D ili N. Ako
korisnik ne unese ništa od toga, treba ispisati poruku "Pogresan unos." i ponavljati unos sve dok
se ne unese ispravno slovo.

2. Kada korisnik unese neki iznos u bankomat, potrebno mu je vratiti taj iznos koristeći
novčanice od 1 KM, 2 KM, 5 KM, 10 KM, 20 KM, 50 KM. Pri tome treba koristiti minimalan
broj novčanica. Napravite program koji omogućuje da se sa tastature (standardnog ulaza) unese
iznos (pozitivan cijeli broj), a zatim ispisuje koliko koje novčanice treba vratiti.

Primjer:
Unesite iznos: 93
1 novcanica od 50 KM
2 novcanica od 20 KM
0 novcanica od 10 KM
0 novcanica od 5 KM
1 novcanica od 2 KM
1 novcanica od 1 KM

3. Cilj zadatka je napraviti igru trgovanja robom na berzi!

Robe (eng. commodities) kojima se najviše trguje na berzi su zlato, srebro i nafta. Trenutne
približne cijene ovih roba su: zlato $1200 po unci, srebro $15 po unci i nafta $70 po barelu.
Svakog radnog dana cijena svake od ovih roba raste ili pada za određeni procenat. Npr. ako je
cijena bila $1000 i porasla je za 0.1%, ona sada iznosi $1001. Procenat porasta (ili pada) cijene
se ne može drastično promijeniti: u našoj igri ovaj procenat se svaki dan može povećati ili
smanjiti za 0.1. Koristite funkciju rand() koju smo radili na tutorijalu tako da budu podjednake
šanse da će procenat porasti ili pasti za 0.1.

Na kraju sedmice imate priliku da trgujete ovim robama. Igru počinjete po isteku prve sedmice
sa $100000 u kešu. Možete kupiti ili prodati određenu robu po trenutnoj cijeni. Naravno, ne
možete kupiti više robe nego što imate novca, niti prodati više nego što imate. Kada završite
trgovinu možete preći na sljedeću sedmicu ili prekinuti igru.

Svake sedmice treba vam se ispisati koliko imate zlata, srebra i nafte (te vrijednost ove robe po
trenutnim cijenama) i koliko imate novca u gotovini. U sljedećem redu treba ispisati ukupno
koliko imate vrijednosti (zbir četiri iznosa iz prethodnog reda), a u zagradi razliku u odnosu na
početno stanje od $100.000 (koliko ste zaradili tj. izgubili novca).

Primjer ulaza i izlaza je dat ispod. Svi novčani iznosi se ispisuju na dvije decimale, osim
procenta porasta (pada) iskazanog u zagradi koji se uvijek mijenja za 0.1, tako da uvijek ima
jednu decimalu, te se treba prikazati predznak + kako bi se jasno označilo da li je cijena porasla
ili pala, a količinu roba koje imate treba ispisivati koristeći format %g.

Napomena: Za vrijeme isprobavanja možete staviti srand(time(NULL)); kako ste radili na


tutorijalu 4, ali prilikom slanja zadaće stavite srand(0) jer će se na taj način uvijek pojavljivati
isti brojevi kao na našim testovima.

PON: Zlato $1201.20 (+0.1) Srebro $14.98 (-0.1) Nafta $70.07 (+0.1)
UTO: Zlato $1203.60 (+0.2) Srebro $14.98 (+0.0) Nafta $70.07 (+0.0)
SRI: Zlato $1204.81 (+0.1) Srebro $15.00 (+0.1) Nafta $70.00 (-0.1)
CET: Zlato $1207.22 (+0.2) Srebro $15.00 (+0.0) Nafta $70.00 (+0.0)
PET: Zlato $1208.42 (+0.1) Srebro $15.01 (+0.1) Nafta $70.07 (+0.1)

Imate:
Zlata: 0 ($0.00) Srebra: 0 ($0.00) Nafte: 0 ($0.00) Novca: $100000.00
UKUPNO: $100000.00 ($+0.00)

Unesite izbor (1 - Kupi, 2 - Prodaj, 3 - Sljedeca sedmica, 0 - Kraj


igre): 6
Pogresan izbor!

Imate:
Zlata: 0 ($0.00) Srebra: 0 ($0.00) Nafte: 0 ($0.00) Novca: $100000.00
UKUPNO: $100000.00 ($+0.00)

Unesite izbor (1 - Kupi, 2 - Prodaj, 3 - Sljedeca sedmica, 0 - Kraj


igre): 1

Sta kupujete (1 - Zlato, 2 - Srebro, 3 - Naftu): 1


Koliko? 82

Imate:
Zlata: 82 ($99090.67) Srebra: 0 ($0.00) Nafte: 0 ($0.00) Novca: $909.33
UKUPNO: $100000.00 ($+0.00)

Unesite izbor (1 - Kupi, 2 - Prodaj, 3 - Sljedeca sedmica, 0 - Kraj


igre): 3
PON: Zlato $1210.84 (+0.2) Srebro $15.05 (+0.2) Nafta $70.21 (+0.2)
UTO: Zlato $1212.05 (+0.1) Srebro $15.09 (+0.3) Nafta $70.28 (+0.1)
SRI: Zlato $1212.05 (+0.0) Srebro $15.12 (+0.2) Nafta $70.42 (+0.2)
CET: Zlato $1210.84 (-0.1) Srebro $15.14 (+0.1) Nafta $70.49 (+0.1)
PET: Zlato $1208.42 (-0.2) Srebro $15.17 (+0.2) Nafta $70.49 (+0.0)

Imate:
Zlata: 82 ($99090.18) Srebra: 0 ($0.00) Nafte: 0 ($0.00) Novca: $909.33
UKUPNO: $99999.50 ($-0.50)

Unesite izbor (1 - Kupi, 2 - Prodaj, 3 - Sljedeca sedmica, 0 - Kraj


igre): 1
Sta kupujete (1 - Zlato, 2 - Srebro, 3 - Naftu): 2
Koliko? 50

Imate:
Zlata: 82 ($99090.18) Srebra: 50 ($758.29) Nafte: 0 ($0.00) Novca:
$151.04
UKUPNO: $99999.50 ($-0.50)

4. Svako kome je poznata igra bilijar zna da se kugla kreće po stolu i odbija od rubove stola
slijedeći jednostavno pravilo: ugao pod kojim će se kugla odbiti od rub jednak je uglu pod kojim
je kugla prilazila rubu.

U našem zadatku zamislićemo da je dat neki bilijarski sto dimenzija (n je širina, a m dužina
stola). Neka su na stolu iscrtane linije tako da on izgleda kao koordinatni sistem. Na početku
igrač postavlja kuglu na mjesto tako što izbroji x1 linija po širini i y1 linija po dužini. Zatim cilja
bilijarskim štapom tako da pogodi ivicu stola na mjestu xP i yP.

Pretpostavimo da će se kugla kretati beskonačno dugo i odbijati od rubove po pravilu koje smo
spomenuli. Koliko puta će se kugla odbiti od ivice stola prije nego što se po prvi put vrati u
početnu poziciju?

Ukoliko kugla pogodi ćošak stola, tada problem nema rješenja i program treba ispisati -1 M gdje
je M broj odbijanja od ivice prije pogađanja ćoška, u suprotnom program treba ispisati 0 M gdje
je M broj odbijanja prije povratka u početnu poziciju.

U prvom redu ulaza se nalaze četiri cijela broja: x1 y1 xP i yP koji predstavljaju redom koordinate
početne pozicije kugle i koordinate tačke ivice stola koju igrač cilja da pogodi. U sljedećem redu
se nalaze dva cijela broja n i m razdvojena razmakom, koji predstavljaju širinu i dužinu stola.

Primjer ulaza i izlaza:


Unesite brojeve x1 y1 xp i yp: 2 2 4 6
Unesite n i m: 6 6
0 6

U ovom primjeru kugla se nalazi na početnoj poziciji 2,2 (obojena narandžasta tačka na slici).
Igrač cilja tačku na rubu stola 4,6 (narandžasta kružnica na slici). Ukupne dimenzije stola su 6x6.
Na izlazu trebamo dobiti 0 6. Broj 0 označava da postoji rješenje, a broj 6 da se kugla 6 puta
odbila od rubove stola. Kugla se odbija od rubove redom u tačkama: (4,6), (6,2), (5,0), (2,6),
(0,2), (1,0). Iako se kugla uvijek na početku nalazi na cjelobrojnim koordinatama i cilja se prema
tački koja je također na cjelobrojnim koordinatama, to ne znači da će se sve buduće tačke
odbijanja nalaziti na cjelobrojnim koordinatama.

Primjer 2:
Unesite brojeve x1 y1 xp i yp: 1 1 7 5
Unesite n i m: 7 7
0 10
Izmjene:

● 1.10.2018 19:25 - izmijenjena postavka 3. zadatka tako da se u


zagradi ispisuje razlika u odnosu na početno stanje a ne u odnosu na
prošlu sedmicu; već je nekoliko studenata uradilo na ovaj način jer su
testovi takvi, a ima i više smisla.

You might also like