Stránka 1 z 1

Programátorský víceboj 2. díl - Morseovka

Napsal: 07 črc 2017 09:03
od cpp
Ahoj kolegové,

minulý matematický díl velmi lehký. Dnes trochu přitvrdíme, ale ne moc. Úkolem bude opět doplnit definice dvou funkcí.

Zadání

Kód: Vybrat vše

void text_2_morse(char * text);
int morse_2_text(char * morse);


První funkce bude převádět vstupní text (parametr * text) na morseovku (a bude rovnou výsledek převodu vypisovat na standardní výstup).
Pro jednoduchost převádějte pouze malá písmena, ostatní znaky (včetně číslic) ignorujte.

Druhá funkce převadí vstup v morseovce (parametr * morse) na písmena malé abecedy a ihned je vypisuje na standardní výstup. V případě načtení nevalidního kódu (jiné znaky než .-/ a prázdný vstup nebo morseovka představující jiné než alfabetické znaky) okamžitě ukončete funkci s návratovou hodnotou 1, jinak (tedy v případě úspěchu) bude návratová hodnota po dočtení vstupu 0.

V morseovce uvažujte znaky '.', '-' a '/'. Význam '.' a '/' je zcela jasný. Znak '/' odděluje od sebe písmena, respektive ukazuje, kde kód pro dané písmeno končí. Pokud před znakem '/' nejsou ani '.' ani '-', má význam mezery.

Příklady převodu
text_2_morse

Kód: Vybrat vše

a >> .-/
bcd >> -.../-.-./-../
x y >> -..-/-.--/
z  (mezera před z a za ním) >> /--..//
t;u >> -/..-/
ij1234k >> ../.---/.-../
 (mezera >> /)
(prázdný vstup) >> (nic nevypisuj)


morse_2_text

Kód: Vybrat vše

.-/ >> a
.- >> (chyba)
// >> (dvě mezery za sebou)
....-/ (číslo 4) >> (chyba)
fgh >> (chyba)


https://cs.wikipedia.org/wiki/Morseova_abeceda

Proč se převádí jen malá abeceda?
Cílem není vytvořit aplikaci, která by měla sloužit v reálném světě pro převody. Cílem je přijít na ten správný princip. Když dokážete, že zvládnete převádět znaky malé abecedy, znamená to, že byste bez problému zvládli i ostatní znaky, ale nemusíte se s tím zdržovat (pok sami nechcete).

Řešení
Doporučeno je C, ale jazyk si můžete vybrat dle libosti. Kód by měl být nejen funkční, ale také dobře strukturovaný a dobře optimalizovaný (preferováná je co nejnižší časová náročnost). V případě, že zvolíte jazyk C, můžete se zapojit do minisoutěže o nejrychlejší převod.

Pokud budete potřebovat pomocné funkce nebo konstanty, můžete je použít.

Pro odevzdání platí stejná pravidla jako minule.

Re: Programátorský víceboj 2. díl - Morseovka

Napsal: 07 črc 2017 09:58
od Uziv00
OT/Zajímalo by mě, jestli přiznáš pravou identitu, když jsi minule tak rozvášněně psal o chlapství:-) Taky by mě zajímalo, proč věnuješ tolik práce, času, energie a zřejmě taky peněz na to, aby ses sem vrátil s novou identitou a vyvolával flame, případně urážel členy fóra.
Je škoda, že svou umíněnost a zarputilost nevěnuješ ušlechtilejším cílům :-( Tak co, chlapsky se přiznáš, nebo budeš zbaběle zalezlý za VPN?
/OT

Re: Programátorský víceboj 2. díl - Morseovka

Napsal: 07 črc 2017 19:50
od faraon
Jen pro zajímavost, není morseovka jako morseovka. U nás známá mezinárodní verze se od té "pravé", používané ještě v šedesátých letech dvacátého století na amerických železnicích, než jí nahradily počítačové sítě, místy dost podstatně liší:

Obrázek

Škoda že je zadání osekané o čísla, právě s těmi se dá užít spousta legrace. Navíc norma obsahuje také mnoho znaků národních abeced s diakritikou, a dokonce i řadu speciálních povelů, například opravu předchozí chyby :)

Re: Programátorský víceboj 2. díl - Morseovka

Napsal: 07 črc 2017 20:13
od Uziv00
Jj. např. identifikace zkratek, vysílat čísla zkráceně, q-kódy. Takhle mi to přijde jako všechno na jedno brdo.