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

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

cpp
nováček
Příspěvky: 41
Registrován: červen 17
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod cpp » 07 črc 2017 09:03

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.

Reklama
Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23592
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod ITCrowd » 07 črc 2017 09:58

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
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 07 črc 2017 19:50

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 :)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23592
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod ITCrowd » 07 črc 2017 20:13

Jj. např. identifikace zkratek, vysílat čísla zkráceně, q-kódy. Takhle mi to přijde jako všechno na jedno brdo.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů