IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
M0dEx
Člen
Avatar
M0dEx:28.2.2015 22:57

Čau všichni, programuju jen chvíli a nějak jsem se zasekl na encoderu morseovky, decoder je v pohodě, ale ten encoder...
Tady je můj kod(Snažím se, aby byl co nejvíc uspořádaný

namespace Dekodér_Morzeovky
{
    class Program
    {
        static void Main(string[] args)
        {
            Menu();
        }
        public static void Menu()
        {
            Console.Clear();
            Console.WriteLine("Menu: 1)Encoder");
            Console.WriteLine("      2)Decoder");
            Console.WriteLine("      3)Exit");
            char input = Console.ReadKey().KeyChar;

            switch (input)
            {
                case '1':
                    try
                    {
                        Console.Clear();
                        Console.WriteLine("Zadejte zprávu v abecede(znaky oddělujte mezerou): ");
                        string vstup = Console.ReadLine();
                        Encoder E = new Encoder();
                        E.Enkoder(vstup);
                    }
                    catch
                    {

                    }
                    return;
                case '2':
                    try
                    {
                        Console.Clear();
                        Console.WriteLine("Zadejte zprávu v morzeovce(znaky oddělujte mezerou): ");
                        string vstup = Console.ReadLine();
                        Decoder D = new Decoder();
                        D.Dekoder(vstup);
                    }
                    catch
                    {

                    }
                    return;
                case '3':
                    Environment.Exit(0);
                    return;
            }
        }
    }

    class Decoder
    {
        public static string abecedniZnaky = "abcdefghijklmnopqrstuvwxyz";
        public static string[] morzeovyZnaky = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
                                                "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
                                                "...-", ".--", "-..-", "-.--", "--.."};
        public void Dekoder(string vstup)
        {
            string[] znaky = vstup.Split(' ');
            string vystup = "";

            foreach (string morzeuvZnak in znaky)
            {
                char abecedniZnak = '?';
                int index = Array.IndexOf(morzeovyZnaky, morzeuvZnak);
                if (index >= 0)
                    abecedniZnak = abecedniZnaky[index];
                vystup += abecedniZnak;
            }

            Console.WriteLine("Zprava zni: " + vystup);
            Console.WriteLine("------------------------------------------------------------------------");
            Console.WriteLine("Pro návrat do menu stistkni jakékoliv tlačítko...");
            Console.ReadKey();
            Program.Menu();
        }
    }
    class Encoder
    {
        public static string[] abecedniZnaky = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r",
                                                    "s", "t", "u", "v", "w", "x", "y", "z"};
        public static string[] morzeovyZnaky = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
                                                "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
                                                "...-", ".--", "-..-", "-.--", "--.."};
        public void Enkoder(string vstup)
        {
            string[] znaky = vstup.Split(' '); //znaky = {'a', 'b', 'c', apod.}
            string vystup = "";

            foreach(string abecedniZnak in znaky)
            {
                string morzeuvZnak = "";
                int index = Array.IndexOf(abecedniZnaky, abecedniZnak);
                if (index >= 0)
                    morzeuvZnak = morzeovyZnaky[index];
                vystup += morzeuvZnak;
                Console.WriteLine("Zprava zni: " + vystup);
                Console.WriteLine("------------------------------------------------------------------------");
                Console.WriteLine("Pro návrat do menu stistkni jakékoliv tlačítko...");
                Console.ReadKey();
                Program.Menu();
            }
        }
    }
}

)

Už jsem se dostal k tomu, že mi to vyhodí přeložené 1 písmeno v morseově abecedě, ale nic víc :) Nevadí mi překopání celého kodu a rád bych se v C# naučil :)

Editováno 28.2.2015 22:58
 
Odpovědět
28.2.2015 22:57
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na M0dEx
Jan Vargovský:28.2.2015 23:19
class Morseovka
{
public string Dekoduj(string text) { ... }
public string Zakoduj(string text) { ... }
}

Drž se téhlle struktury. Takhle máš navíc zbytečně českou třídu a anglickou metodu... Btw, celá ta funkcionalita je navíc špatně, protože kdybych chtěl celý den používat ten program, tak mi někdy v průběhu večera spadne :) (hint: rekurzivní volání)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
28.2.2015 23:19
Avatar
M0dEx
Člen
Avatar
Odpovídá na Jan Vargovský
M0dEx:28.2.2015 23:27

Dobře, díky :)
jak jsem říkal, zatím se to učím, takže chyby budu dělat, ale zase jsem ten typ, kterýho stačí sanměrovat správným směrem a sám už si to pořeší.
Tohle zkusím zítra, teď jdu spát :D

 
Nahoru Odpovědět
28.2.2015 23:27
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na M0dEx
Jan Vargovský:28.2.2015 23:29

Jinak ta třída by měla být obecná a ne vázána na konzoli, takže vstup/výstup si nech v mainu a uvnitř té třídy si nech akorát ten algoritmus na převod :)

 
Nahoru Odpovědět
28.2.2015 23:29
Avatar
M0dEx
Člen
Avatar
Odpovídá na Jan Vargovský
M0dEx:1.3.2015 12:48

Ok, díky moc... Vážně si mi pomohl :)

 
Nahoru Odpovědět
1.3.2015 12:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.