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.