{ program prevzat z http://home.pf.jcu/~edpo/program/kap11.html } { } {======================================================================} program Morse; {======================================================================} type Sipka = ^Uzel; Uzel = record Znak : Char; Tecka, Carka : Sipka end; var Koren : Sipka; function VytvorUzel (Z: Char; T, C: Sipka): Sipka; { vytvoří uzel, } {------------------------------------------------} { jeho položkám } { přiřadí hodnoty parametrů Z, T a C a vrací ukazatel na něj } var P: Sipka; begin { VytvorUzel } New(P); with P^ do begin Znak := Z; Tecka := T; Carka := C end; VytvorUzel := P end; { VytvorUzel } procedure Dekoduj; {čte, dekóduje a vypisuje text zprávy } {----------------} var Smer : Sipka; Symbol : Char; begin { Dekoduj } Smer := Koren; { inicializace } while not Eof do { dekódovací cyklus } begin Read(Symbol); case Symbol of '.' : Smer := Smer^.Tecka; { tečka: přechod na levý podstrom } '-' : Smer := Smer^.Carka { čárka: přechod na pravý podstrom } else begin { oddělovač: } Write(Smer^.Znak); { tisk písmene z aktuálního uzlu } Smer := Koren { začátek kódu dalšího písmene } end end end; Writeln end; { Dekoduj } begin { program } Koren := VytvorUzel(' ', { tento příkaz vytvoří } VytvorUzel('E', { dekódovací strom } VytvorUzel('I', { a ukazatele na jeho } VytvorUzel('S', { kořen předá proměnné } VytvorUzel('H', nil, nil), { Koren } VytvorUzel('V', nil, nil)), VytvorUzel('U', VytvorUzel('F', nil, nil), nil)), VytvorUzel('A', VytvorUzel('R', VytvorUzel('L', nil, nil), nil), VytvorUzel('W', VytvorUzel('P', nil, nil), VytvorUzel('J', nil, nil)))), VytvorUzel('T', VytvorUzel('N', VytvorUzel('D', VytvorUzel('B', nil, nil), VytvorUzel('X', nil, nil)), VytvorUzel('K', VytvorUzel('C', nil, nil), VytvorUzel('Y', nil, nil))), VytvorUzel('M', VytvorUzel('G', VytvorUzel('Z', nil, nil), VytvorUzel('Q', nil, nil)), VytvorUzel('O', nil, nil)))); Dekoduj { cteni, dekodovani a vypis zpravy } { zadame-li vstup ve tvaru:.--./.-./---/--./.-./.-/--//--/---/.-./..././ } { dostaneme tvar vystupu: PROGRAM MORSE } { Dale je mozno vkladat znaky morseovy abecedy, reakci je text. } { Po zadani konce souboru je proces behu progarmu ukoncen } end.