Avatar
sn1per9cze
Člen
Avatar
sn1per9cze:

Č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ý
Redaktor
Avatar
Odpovídá na sn1per9cze
Jan Vargovský:
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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět 28.2.2015 23:19
Avatar
sn1per9cze
Člen
Avatar
Odpovídá na Jan Vargovský
sn1per9cze:

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ý
Redaktor
Avatar
Odpovídá na sn1per9cze
Jan Vargovský:

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
sn1per9cze
Člen
Avatar
Odpovídá na Jan Vargovský
sn1per9cze:

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.