6. vaje: KODIRANJE (06.04. - 13.04.)

Napišite program, za kodiranje  besedila s pomočjo šifrirne knjige. Posamezna črka besedila  se zakodira v dve številki, pri čemer prva številka pomeni zaporedno številko besede v knjigi, druga številka pa pomeni indeks črke v izbrani besedi. Besede v knjigi in črke v besedah se številčijo od 1 naprej.

Primer: če šifrirna knjiga vsebuje besedilo

Zive naj vsi narodi,
ki hrepene docakat dan,
ko, koder sonce hodi,
prepir iz sveta bo pregnan,
ko rojak
prost bo vsak,
ne vrag, le sosed bo mejak!

potem koda "4 3" pomeni "tretjo črko četrte besede", torej črko r. Z isto šifrirno knjigo se niz "sonce" zakodira kot, na primer,

3 2 4 4 2 1 7 3 1 4

(opomba: isti niz se lahko zakodira na več načinov; niz "sonce"  se lahko zakodira tudi kot 11 1 11 2 11 3 11 4 11 5).


1. naloga

Napišite metodo

static void odkodiraj(String kodirnaKnjiga, String koda)
ki odkodira dano besedilo. Ob klicu

odkodiraj("viri/pesem.txt", "viri/kodirano.txt");

naj program izpiše

Regrat cveti,
cebela hiti!

Opomba: v prvi verziji metode odkodiraj() ignorirajte vse ničle (0) v kodi. Ko bo metoda delovala (zgornje besedilo se bo izpisalo kot "regratcveti,cebelahiti!", pa jo popravite tako, da bo ena ničla pomenila veliko črko, dve ničli presledek, tri zaporedne ničle pa prehod v novo vrstico. 

Če se med kodami pojavi napačen vnos (recimo indeks neobstoječe besede ali indeks neobstoječe črke), izpišite znak "?".


2. naloga

Napišite metodo

static void kodiraj(String kodirnaKnjiga, String niz)

ki s pomočjo kodirne knjige zakodira podani niz in kodo (zaporedje številk) izpiše na zaslon.  Metoda naj dela tako, da bo vsako črko iz kodirne knjige uporabila NAJVEČ ENKRAT. Če črke niza, ki jo kodiramo, ni  v kodirni knjigi, naj metoda izpiše zaporedje "99 99" (neobstoječa črka).  Ob klicu

    kodiraj("viri/pesem.txt", "pomlad pomlad pomlad");

naj metoda izpiše

6 4 4 4 28 1 25 1 2 2 4 5 0 0 13 1 7 2 99 99 99 99 4 2 7 1 0 0 13 4 9 2 99 99 99 99 7 4 8 1