Strani spletnega mesta
Leto 2010
Leto 2011
Leto 2012
Leto 2013
Leto 2014
Leto 2015
Leto 2016
Sodelujoči
Navodila
Testna naloga
1. Naloga
2. Naloga
3. Naloga
4. Naloga
5. Naloga
Nasveti
Leto 2018
Leto 2019
Leto 2020
Leto 2021
Leto 2022
Leto 2023
NAPOJ
ACM Bober
Programiranje v višji prestavi
Srednja šola
Razno
5. Naloga
Neskončna pokrajina
Z Daljnega vzhoda smo uvozili poceni 3D skener - napravo, ki zna meriti višino točk na neki pravokotni površini. Žal pa so izdelovalci izdelavo programskega vmesnika prepustili najcenejšemu podizvajalcu (pa še tega so očitno poiskali nekje med učenci lokalne osnovne šole),
zato nam je na voljo le ena sama funkcija za merjenje - Visina(x, y). Tej pošljemo celoštevilski koordinati točke, ki ji želimo izmeriti višino, vrne pa nam - seveda - izmerjeno višino. Funkcija je takšne oblike:
function Visina(x, y: integer): integer; int Visina(int x, int y); def Visina(x, y): ... |
{ v pascalu } /** v C/C++ in podobnih jezikih } # v pythonu; vrne int |
Drugih informacij nismo dobili, zato ne vemo niti, kaj pomenita števili, ki ju pošljemo v funkcijo (v kakšnih enotah sta podani). S poskušanjem smo ugotovili le, da vrednosti ne smeta biti negativni
(potem se program sesuje) in da je izmerjena vrednost vedno večja ali enaka 0. S postavljanjem različnih elementov na začetno koordinato smo tudi hitro ugotovili, kako program meri višino. Ne uspe pa nam umeriti koordinatnega sistema, ker je genialni programer funkcijo Visina napisal tako, da ob neveljavnih pozitivnih koordinatah vrne vrednost 0. Zato bomo problem predali tebi.
Napiši podprogram Poisci(ciljnaVisina), ki bo poiskal in izpisal koordinate (x, y) polja, ki je visoko toliko kot podana vrednost (ciljnaVisina). Edino zagotovilo, ki ga imaš, je, da zagotovo obstajata nenegativni koordinati x in y, pri katerih bo funkcija Visina(x, y) vrnila vrednost ciljnaVisina. Če ti je lažje, lahko koordinate zapišeš v datoteko, namesto da bi jih izpisal na zaslon.
Upoštevaj, da je v mreži lahko veliko polj višine 0, torej se ne moreš zanašati na to, da rezultat 0 pomeni, da si funkcijo Visina poklical z neveljavnimi koordinatami. Upoštevaj tudi, da je delovanje skenerja relativno počasno in da zato ne moreš poklicati funkcije Visina kar za vse možne celoštevilske koordinate (torej za vse take koordinate, ki jih je mogoče predstaviti z vrednostjo tipa Integer oz. Int.