4. naloga

Dva od petih

Leta 1958 je podjetje IBM dalo na trg računalnik IBM 7070, ki je nadomestil predhodne modele računalnikov z elektronkami, saj je bil izdelan s tranzistorji in zato zmogljivejši in energijsko manj potraten.

Ker je bil model IBM 7070 namenjen poslovnim obdelavam, so bila števila v njem shranjena kot deset desetiških števk, vsaka števka pa zapisana s petimi biti, skupaj torej 50 bitov (in dodatni predznak, s katerim pa se v tej nalogi ne bomo ukvarjali).

Čeprav bi za zapis števke med 0 in 9 zadoščali štirje biti, so se izdelovalci zavedali možnosti napak pri hranjenju in obdelavi podatkov, zato so se odločili za pet bitov in izmed vseh možnih 32 kombinacij izbrali deset takih, pri katerih velja, da ima vsaka veljavna desetiška števka natanko dva bita od petih postavljena na 1, ostali trije pa morajo biti 0. Če se je med obdelavo kje pojavila nedovoljena kombinacija bitov, je bila javljena napaka.

Tako kodiranje omogoča, da zaznamo vsako posamično napako (sprememba enega bita iz 1 v 0 ali obratno), lahko pa celo več napak, če so vse iste vrste (vse iz 0 v 1 ali pa vse iz 1 v 0).

Tole je tabela, po kateri se pri ibm 7070 števila med 0 in 9 zakodirajo v petbitno kodo:

Napiši program, ki bo prebral eno vrstico z vhodne datoteke ali standardnega vhoda (kar ti je lažje), v kateri se nahaja zapis enega desetmestnega kodiranega števila. Vrstica vsebuje 50 takih znakov, ki so enice ali ničle (poleg njih so lahko v vrstici še drugi znaki, na primer presledki, vendar vse take druge znake zanemarimo; vsega skupaj pa je vrstica dolga največ 100 znakov), in predstavlja deset desetiških števk. Program naj izpiše prebrano število s števkami med ”0“ in ”9“, morebitne neveljavne števke v številu pa naj izpiše kot zvezdice.

Primer vhodnih podatkov:

01a100 0110011000, 10100  10110  x 010 10 00110;;;;10001 00000 00011

Pri tem primeru je rezultat:

0012*456*9