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
Uziv00
Pohlaví: Nespecifikováno

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

Příspěvekod Uziv00 » 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

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
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)

Uziv00
Pohlaví: Nespecifikováno

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

Příspěvekod Uziv00 » 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.


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 3 hosti