You are on page 1of 13

Zadatak 1

Ivana posmatra teniske meeve na turniru u Tivtu. Za vrijeme zagrijavanja igraa na ekranu su se pojavile njihove statistike. Ivani je zapela za oko istorija meeva dvaju igraa. Primijetila je da neto nije u redu sa prethodnim rezultatima, tj. da neki od njih nisu ispravni. Dosjetila se da trai od vas da joj napiete program koji provjerava rezultate. Teniski me sastoji se od setova, a svaki set od gemova. Vae sljedea pravila: Igra dobija set ako ima 6 ili vie gemova, i barem dva gema vie od protivnika. Posebno, u prvom ili drugom setu (ali ne i u treem), ako je rezultat 6:6, igra se jo jedan zadnji gem u kojem se odluuje pobjednik tog seta (tzv. tie-break). Me zavrava kad jedan od igraa osvoji dva seta. Taj igra je pobjednik. Rezultat je ispravan ako je mogu me koji se odvija prema gornjim pravilima, a zavrava tim rezultatom.Dodatno, ako je jedan od igraa Roe Federer (u ulazu "federer"), onda rezultat u kojem je on izgubio neki set ne moe biti ispravan (jer opte je poznato da je Federer vanzemaljac i da nikad ne gubi meeve). Napiite program koji e pomoi Ivani da provjeri ispravnost rezultata svakog mea.

Ulazni podaci
U prvom redu nalaze se imena dvaju igraa odvojena jednim razmakom. Oba imena su nizovi od po najvie 20 malih slova engleske abecede. Imena e biti razliita. U drugom redu nalazi se prirodan broj N (1 N 50), broj dosadanjih susreta dvaju igraa. Svaki od sljedeih N redova sadri rezultat po jednog mea, koji se sastoji od rezultata pojedinih setova odvojenih po jednim razmakom. Broj setova u svakom meu je izmeu 1 i 5. Rezultati setova su u obliku "A:B", gdje su A i B brojevi gemova koje je osvojio svaki od igraa. Ti brojevi su cijeli, izmeu 0 i 99 (ukljuivo).

Izlazni podaci
Za svaki od meeva u ulazu, istim redom kojim su u ulazu, ispiite u jedan red "da" ako je rezultat ispravan ili "ne" ako nije ispravan.

Primjeri test podataka


ulaz sampras agassi 6 6:2 6:4 3:6 7:5 2:6 izlaz ulaz federer roddick 1 2:6 4:6 izlaz

da da ne

ne

6:5 7:6 6:2 6:2

7:4 7:6 3:6 1:6 6:8

da ne da

Zadatak 2
Aleksa i Nikola postavljaju tenkie na drvenu plou podijeljenu na N * N kvadratia. Tenk se moe u jednom potezu pomaknuti na jedno od etiri susjednih polja i taj pomak nazivamo korakom. Kaemo da tenk uva red i kolonu u kojem se nalazi. Ni u kojem trenutku na istom polju ne smiju biti dva ili vie tenka. Nakon vie sati igranja, Nikolina mama ih je pozvala na ruak, a oni su odluili postaviti tenkove tako svaki tenk uva jednu kolonu i jedan red, odnosno da se u svakom redu i svakoj koloni nalazi tano jedan tenk. To moraju uraditi u minimalnom broju koraka. Napiite program koji e pronai minimalni broj koraka potreban za postavljanje tenkova, svaki u svoj red i kolonu, te niz koraka koji je potrebno uiniti.

Ulazni podaci
U prvom redu nalazi se prirodan broj N (5 N 500). U sljedeih N redova nalaze se po dva broja R i S (1 R, S N) koji oznaavaju red i kolonu u kojem se pojedini tenk nalazi u trenutku kad je Nikolina mama zvala na ruak. Nijedna dva tenka ne nalaze se na istom polju. Redovi su numerisani odozgo prema dolje, a kolone slijeva na desno. Tenkovi su numerisani od 1 do N redom kojim su navedeni u ulazu.

Izlazni podaci
U prvi red upiite broj K minimalni broj koraka. U sljedeih K redova upiite broj B i karakter C, odvojene razmakom. Broj B oznaava redni broj tenkia koji elite pomaknuti, a karakter C oznaava smjer i to 'L' lijevo, 'R' desno, 'U' gore, 'D' dolje. Napomena: Rjeenje ne mora biti jedinstveno.

Primjeri test podataka


ulaz 5 1 1 1 2 1 3 1 4 1 5 izlaz 10 1 D 2 D 3 D 4 D 1 D ulaz 5 2 3 3 2 3 3 3 4 4 3 izlaz 8 1 R 1 R 2 U 2 U 4 D ulaz 6 1 1 1 2 2 1 5 6 6 5 6 6 izlaz 8 2 R 2 D 3 D 3 R

2 3 1 2 1

D D D D D

4 D 5 L 5 L

4 4 5 5

U L L U

Zadatak 3
Matija gleda na teletekstu rezultate fudbalskih utakmica i tabelu lige. U tabeli se za svaku ekipu nalazi pet podataka: ukupan broj odigranih utakmica, broj pobjeda, broj nerijeenih utakmica, broj poraza i broj bodova. Ekipa za svaku pobjedu dobija 3 boda, a za svaki nerijeen rezultat 1 bod. Matija je primijetio da se vrijednosti nekih polja u tablici mogu odrediti iz drugih. Napiite program koji dopunjava tabelu u kojoj su vrijednosti nekih polja nepoznate. Podaci razliitih ekipa nisu povezani, npr. mogue je da u tablici pie da su sve ekipe pobijedile u svim utakmicama (iako to u stvarnoj ligi nije mogue). Za svaku ekipu je broj odigranih utakmica najvie 100.

Ulazni podaci
U prvom redu nalazi se prirodan broj N (1 N 1000), broj ekipa u ligi. Svaki od sljedeih N redova sadri po pet polja tabele za jednu ekipu odvojenih po jednim razmakom, redom pet podataka kao to je opisano u tekstu zadatka. Polje tabele sadrava cijeli broj (najmanje 0) ako je vrijednost polja poznata ili znak '?' (upitnik) ako je vrijednost nepoznata. Ulazni podaci nee biti kontradiktorni i uvijek e biti mogue jednoznano odrediti vrijednosti nepoznatih polja.

Izlazni podaci
Potrebno je tampati tabelu sa upisanim vrijednostima polja gdje nedostaju u ulazu.

Primjeri test podataka


ulaz 5 27 21 3 3 66 27 18 6 3 ? ? 15 5 7 50 ? 14 7 5 ? ? 14 ? 8 47 izlaz 27 27 27 26 27 21 18 15 14 14 3 6 5 7 5 3 3 7 5 8 66 60 50 49 47

Zadatak 4
Dat su sljedei tipovi TYPE Datum = record dan. mjesec, godina: integer end; Radnik = record ime: string[30]; godine_staza:integer; plata:real; zaposlen:datum; end; NizRadnika = array[1..80] of Radnik; 1. Napisati funkciju DobarDatum koja ima jedan argument tipa Datum i koja vraa TRUE ako je argument funkcije ispravan datum i FALSE ako nije ispravan. Obratiti panju na prestupne godine (one koje su djeljive sa 4 a nisu sa 100, a jesu sa 400. Npr. 2000, 1996 i 1892 su prestupne a 1900, 1800 i 2007 nisu prestupne). 2. Napisati funkciju IskusniRadnici koja ima tri argumenta: n broj radnika (prirodan broj) rad - niz radnika od n elemenata gran - realan broj i koja tampa imena svih radnika iz niza rad koji imaju vie od gran godina slube. Funkcija vraa broj takvih radnika. Napisati program koji testira napisane funkcije.

Zadatak 5
Dat su sljedei tipovi TYPE Tacka = record x,y:real; End; Krug = record Centar : tacka; R : real; {r poluprecnik} end; NizKrugova = array[1..80] of Krug; Scena = record broj_elemenata:integer; {Manje od 80} krugovi:NizKrugova; end; 1. Napisati funkciju Presjek koja ima dva argumenta k1 i k2 tipa Krug i koja vraa TRUE ako krugovi k1 i k2 imaju zajednikih taaka i FALSE, ako krugovi nemaju presjeka. 2. Napisati proceduru UcitajDat(imedat:string; var sc:scena) koja iz tekstualne datoteke ije je ime dato argumentom imedat uitava podatke o krugovima u argument sc. U svakom redu tekstualne datoteke upisana su po tri realna broja razdvojena jednom bjelinom, gdje su prva dva broja koordinate centra a trei broj je duina poluprenika. Smatrati da nema vie od 80 redova u datoteci. 3. Napisati proceduru UcitajDatBin(imedat:string; var sc:scena) koja iz binarne datoteke ije je ime dato argumentom imedat uitava podatke o krugovima u argument sc. Datoteka je tipa FILE of KRUG; 4. Napisati proceduru PromjenaDatBin(imedat:string; pos:integer; x:krug) koja mijenja element na poziciji pos u binarnoj datoteci imedat elementom x. Ako je pozicija van datoteke, procedura ne treba da radi nita. 5. Napisati funkciju BigCircle koja ima jedan argument tipa Scena i koja vraa indeks onog kruga iz Scene (ako takav krug postoji) koji ima povrinu veu od sume povrina svih ostalih krugova u Sceni i 0 ako takav krug ne postoji. 6. Napisati funkciju BoundingCircle koja ima jedna argument tipa Scena i koja tampa koordinate centra i poluprenik onog kruga koji u sebi sadri sve ostale krugove iz date scene, ako takav krug postoji. Funkcija vraa TRUE ako takav krug postoji i FALSE ako ne postoji. 7. Napisati proceduru Prepis koja ima tri argumenta ulaz i izlaz tipa string i k1 tipa Krug i koja ita sve elemente i u tekstualnu datoteku ije je ime argument izlaz tampa koordinate centra

i poluprenike svih krugova iz binarne datoteke ije je ime argument ulaz takvih da imaju zajednikih taaka sa krugom k1. Napisati program koji testira napisane funkcije.

Zadatak 6
Za dizajniranje novog gasovoda kojim e se ruski gas dostavljati Crnoj Gori, Podgorica i Moskva koriste u svoje vrijeme popularnu igru PipeMania. U igri je Evropa predstavljena tablom od R redova i S kolona. U svako polje moe se staviti jedan od sedam osnovnih gradivnih elemenata cjevovoda:

Gas poinje tei kroz cijevi od Moskve prema Podgorici. Kroz svaki od osnovnih sedam blokova gas moe tei u bilo kojem od dva smjera, dok kroz blok '+' mora tei istovremeno u dva smjera (jedan vodoravan, drugi vertikalan), kao u sljedeem primjeru:

N ovi gasovod ve se poeo graditi kad je dojavljeno da su se zlonamjerni hakeri doepali planova te izbrisali tano jedan osnovni blok iz nacrta, tj. zamijenili ga praznim poljem. Napiite program koji odreuje odakle je izbrisan blok i kojeg je tipa bio.

Ulazni podaci
U prvom redu ulaza nalaze se dva prirodna broja R i S, dimenzije Evrope (1 R,S 25). Sljedeih R redova opisuje nacrt gasovoda (tabelu), a svaki red sastoji se od S simbola. Doputeni simboli su: . (taka, koja opisuje prazno polje), | (ASCII kod 124), -, +, 1, 2, 3, 4 koji predstavljaju gradivne blokove cjevovoda, i slova M i P koji predstavljaju redom Moskvu i Podgoricu (pojvaljuju se ta;no jednom na nacrtu). Put gasa bie jednoznano odreen. Pored Moskve i podgorice na nacrtu nalazie se tano jedan blok. Na nacrtu nee biti suvinih blokova, tj. dodavanjem izbrisanog bloka moraju biti upotrebljeni svi blokovi na nacrtu. Ulazni podaci bie takvi da rjeenje uvijek postoji i jednistveno je.

Izlazni podaci
U jednom redu tampati red i kolonu odakle je izbrisan i tip bloka (jedna od sedam simbola |, -, +, 1, 2, 3, 4)

Primjeri test podataka


Primjer 1 ulaz 3 7 ....... .M-.-P. ....... izlaz 2 2 Primjer 2 ulaz 3 5 ..1-M 1-+.. P.23. izlaz 2 4 4 Primjer 2 ulaz 6 10 P.1----4.. |.|....|.. |..14..M.. 2-+++4.... ..2323.... .......... izlaz 3 3 |

Zadatak 7
U raunarskoj igri "Roboti", igra pokuava pobjei podivljalim robotima. Robota je mnogo, a igra samo jedan, ali je kretanje robota vrlo predvidljivo, to igra moe iskoristiti. Igra se odvija na tabli RS, a sastoji se od ponavljanja sljedeih pet koraka: igra se pomakne u nekom od osam smjerova (vodoravno, vertikalno, etiri dijagonalna smjera) ili ostaje na mjestu; uoliko se igra pomakne na polje na kojem se nalazi robot, igri je kraj i igra gubi; svaki robot se pomie u jednom od osam smjerova, na polje najblie igrau (robot pokuava to vie smanjiti iznos izraza |r1r2| + |s1s2|, gdje je (r1, s1) pozicija igraa, a (r2,s2) pozicija robota); ukoliko neki robot ue na polje na kojem se nalazi igra, igri je kraj i igra gubi; ukoliko na neko polje uu dva ili vie robota, nastaje velika eksplozija i svi roboti na tom polju nestaju. Dat je poetni poloaj igraa, raspored robota na tabli i potezi igraa. Ukoliko igra napravi sve poteze i preivi, tampati stanje na tabli tabli nakon svih njegovih poteza. U suprotnom, potrebno je odrediti koliko je poteza uspio napraviti.

Ulazni podaci
U prvom redu ulaza nalaze se dva prirodna broja R i S, (1 R 100, 1 S 100), broj redova i broj kolona na tabli. Sljedeih R redova opisuje tablu, a svaki red sastoji se od S simbola. Doputeni simboli su: . (taka, koja opisuje prazno polje), R (polje na kojem se nalazi robot), I (polje na kojem se nalazi igra). Posljednji red sadri navie 100 simbola poteze igraa. Svaki potez predstavljen je jednom od cifara 1-9, gdje cifra 5 predstavlja situaciju da se igra ne pomjera, dok ostale cifre predstavljaju kretanje u jednom od 8 smjerov kao na slici:

Ulazni niz bie takav da igra nikada ne moe napustiti tablu.

Izlazni podaci
Ukoliko igra napravi sve poteze i preivi, tampati stanje table u istom formatu kao u ulazu. U suprotnom, potrebno je tampati "kraj X" (bez navodnika), gdje je X broj poteza koje je igra napravio.

Primjeri test podataka


Primjer 1
ulaz 4 5 I.... ..... .R.R. ..... 6 izlaz .I... .RR.. ..... .....

Primjer 2
ulaz 9 10 .......... .........R .......... R......... R...I..... R......... .......... .........R ....R..... 5558888 izlaz ....I..... ....R..... .......... .......... .......... .......... .......... .......... ..........

Primjer 2
ulaz 12 8 ...I.... ........ ........ ........ ........ RR...... ......RR R......R ........ ........ ........ ...R.... 66445394444162 izlaz kraj 11

Napomena: U Primjeru 2, nakon prvog poteza (u kojem igra ostaje na mjestu), sva tri robota s lijevog dijela table ulaze na isto polje te nestaju. Nakon treeg poteza dva robota s desnog dijela mape nestaju, a robot s donjeg dijela mape nastavlja pratiti igraa kad se ovaj pone pomicati gore.

Zadatak 8
Napisati procedure Zmija1, Zmija2 i Zmija3 koje imaju po tri argumenta: prirodne brojeve m i n koji predstavljaju dimenzije matrice cijelih brojeva i cio broj k i koja tampa zmijaste matrice koje poinju brojem k (vidi sliku) . Zmija1, m=5,n=4,k=8 8 9 10 11 15 14 13 12 16 17 18 19 23 22 21 20 24 25 26 27 Zmija2, m=5,n=4,k=8 8 9 13 14 10 12 15 21 11 16 20 22 17 19 23 26 18 24 25 27 Zmija3, 8 21 20 19 18 m=5,n=4,k=8 9 10 11 22 23 12 27 24 13 26 25 14 17 16 15