2. naloga

Kompresija

Merilna postaja meri višino Blejskega jezera in podatke po mobilni povezavi sporoča v meteorološki center. Meritve so pozitivna cela števila in se le počasi spreminjajo. Tipičen primer izmerjenih podatkov:

310, 310, 310, 310, 310, 311, 311, 311, 313, 313, 311.

Ker bi radi varčevali pri količini zakupljenega podatkovnega prometa, smo se odločili, da bomo vsak drugi ponovljeni podatek izpustili. Namesto zgornje serije meritev bi tako radi v center sporočili le:

310, 310, 310, 311, 311, 313, 311.

Kadar je zaporednih podatkov z isto vrednostjo liho mnogo, število sporočenih podatkov zaokrožimo navzgor. V zgornjem primeru se to zgodi pri meritvah 310 in 311.

Napiši program, ki se bo vrtel v neskončni zanki, bral podatke z merilne postaje in jih sporočal v center. Na voljo ima dva podprograma oz. funkciji:

  • int Preberi();
    Funkcija počaka, da strojna oprema opravi meritev, ter vrne izmerjeno vrednost. Ta je vedno večja od 0.
  • void Sporoci(int meritev);
    Podprogram sporoči meritev v center.

Program napiši tako, da bo izmerjene vrednosti kar najhitreje poslal dalje. (To pomeni, da ne boš dobil(a) vseh točk, če bo program čakal, da se bo vrednost meritve spremenila, ter šele nato sporočil polovico zapomnjenih vrednosti.)

Še deklaracije v drugih jezikih:

{ v pascalu }
function Preberi: integer;
procedure Sporoci(meritev: integer);

# v pythonu
def Preberi(): ...     # vrne int
def Sporoci(meritev): ...