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ž

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ů
Elite Level 11
Elite Level 11
Příspěvky: 13250
Registrován: březen 10
Pohlaví: Muž

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

Uživatelský avatar
faraon
Master Level 8
Master Level 8
Příspěvky: 5968
Registrován: prosinec 10
Pohlaví: Muž

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 :)
Nejhroznější sen linuxáka: nabootuje počítač, a tam Windows.
Nejhroznější sen windowsáka: nabootuje počítač, a tam Linux.
Nejkrásnější sen linuxáka: nabootuje počítač, a tam Linux.
Nejkrásnější sen windowsáka: nabootuje počítač.

Uživatelský avatar
ITCrowd
Tvůrce článků
Elite Level 11
Elite Level 11
Příspěvky: 13250
Registrován: březen 10
Pohlaví: Muž

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


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Programátorský víceboj 0. díl - Šifrujeme
    od cpp » 05 čer 2017 14:03 » v Programování a tvorba webu
    57
    2075
    od atari
    31 srp 2017 10:14
  • Programátorský víceboj 1. díl - Máme rádi matematiku
    od cpp » 20 čer 2017 11:22 » v Programování a tvorba webu
    27
    972
    od faraon
    07 črc 2017 17:21
  • Reklamace a použitý díl
    od rychtara » 16 lis 2016 09:41 » v Reklamace a zákony
    2
    383
    od petr22
    16 lis 2016 09:48
  • Tydenní herní novinky - 22. díl
    od beather » 13 srp 2017 08:21 » v Hry
    1
    365
    od Ltb
    14 srp 2017 13:52

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

Kdo je online

Uživatelé prohlížející si toto fórum: CommonCrawl [Bot] a 1 host