Strani spletnega mesta
Leto 2010
Leto 2011
Leto 2012
Leto 2013
Leto 2014
Leto 2015
Leto 2016
Leto 2017
Leto 2018
Leto 2019
Leto 2020
Leto 2021
Sodelujoči
Navodila
Testna naloga
1. naloga
2. naloga
3. naloga
4. naloga
5. naloga
Naloge za 1. skupino
Nasveti
Leto 2023
NAPOJ
ACM Bober
Programiranje v višji prestavi
Srednja šola
Razno
2. naloga
Semafor
Na nekatere semaforje so v zadnjih letih namestili dodatne prikazovalnike, ki prikazujejo čas v sekundah do vklopa zelene luči. Ker želimo čas čakanja izkoristiti za kaj koristnega, smo v avto vgradili inteligentno kamero, ki prepozna številko na prikazovalniku.
Predpostavi, da je za dostop do kamere na voljo funkcija BeriStevec(), ki počaka, da se stanje prikazovalnika spremeni, in poskuša prepoznati številko, ki je po novem prikazana na prikazovalniku. Žal pa se je pri uporabi pokazalo, da kamera pri prepoznavanju ni vedno najbolj natančna (sonce, megla, kót snemanja), zato funkcija BeriStevec ne vrne nujno ene same številke, ampak eno ali več možnih številk, ki jih je kamera prepoznala. Vse te številke so z območja od 0 do 99; prava številka je zagotovo med njimi. Ko prikazovalnik kaže številko 0, vrne tudi BeriStevec le številko 0 in nobene druge. Funkcija BeriStevec je takšne oblike:
vector<int> BeriStevec(); // v C++
public static int[ ] BeriStevec(); // v javi ali C#
public static int[ ] BeriStevec(); // v javi ali C#
def BeriStevec() > list[int]: ... # v pythonu
int stevilke[100]; /* v C/C++: funkcija BeriStevec shrani prepoznane številke v globalno */
int BeriStevec(); /* tabelo „stevilke“, kot vrednost funkcije pa vrne število teh številk. */
var stevilke: array [1..100] of integer; { v pascalu; deluje enako } function BeriStevec: integer; { kot tista v C/C++ }
Napiši program, ki s čim manj zaporednimi klici funkcije BeriStevec ugotovi, katera številka je trenutno na prikazovalniku, in jo izpiše.
Primer: spodnja tabela kaže možen potek dogajanja pri več zaporednih klicih. V prvem stolpcu je prava številka s prikazovalnika, v drugem pa je seznam številk, ki bi ga utegnila vrniti funkcija BeriStevec.
Prikazana številka | Ob klicu BeriStevec vrne |
---|---|
53 | [59, 93, 53, 99] |
52 | [52, 92, 56, 96] |
51 | [51, 57, 97] |
50 | [90, 50, 58, 98] |
49 | [43, 79, 45, 48, 49] |
Po klicih v prikazanem primeru bi se že dalo z gotovostjo zaključiti, da je številka na prikazovalniku res 49 in ne kakšna druga. Tvoj program mora torej takrat izpisati 49.