Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Využij akce až 80 % zdarma při nákupu e-learningu - více informací. Zároveň pouze tento týden sleva až 80 % na e-learning týkající se Swift
Avatar
DoZby
Člen
Avatar
DoZby:29.4.2019 6:26

Ahoj, jak můžu jinak převést string na char, aby kód dával smysl a fungoval?

     {
            //řetězec, který chceme zakódovat
            string s = "Ahoj";
            Console.WriteLine("Původní zpráva:{0}", s);
            //řetězec se zakódovanou zprávou
            string zprava = "";
            //vzorová pole
            string[] morseovyZnaky = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--.."};
            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" };
            //rozbití řetězce  na znaky morzeovky
            string [] znaky = s.Split(' ');




            //iterace znaků
            foreach (string abecedniZnak in znaky)
            {

                char morseuvZnak = '?';
                int index = Array.IndexOf(abecedniZnaky, abecedniZnak);

                if (index >= 0)// znak nalezen
                    morseuvZnak = morseovyZnaky [index];
                zprava += morseuvZnak;
            }
            Console.WriteLine("Zakódovaná zpráva:{0}", zprava);
            Console.ReadKey();

        }

Zkusil jsem: Zkoušel jsem převést string na char pomocí funkce ToChar(), ale nešlo mi to.

Chci docílit: Potřebuji. aby mi to vypsalo zprávu "Ahoj" v morseově abecedě.

Odpovědět
29.4.2019 6:26
Ztrácej svůj čas a čekej na zázrak
Avatar
Odpovídá na DoZby
Michal Štěpánek:29.4.2019 6:36

Tady je to přesně popsané...
https://www.itnetwork.cz/…e-split-join

Editováno 29.4.2019 6:37
Nahoru Odpovědět
29.4.2019 6:36
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
zelvicek
Člen
Avatar
zelvicek:30.4.2019 13:36
  1. string na char převádět nechceš; ten problém je jinde
  2. //rozbití řetězce na znaky morzeovky

string [] znaky = s.Split(' ');
V proměnné "s" je celý vstupní text a methoda Split jej rozděluje na celá slova. Název proměnné "abecedniZnak" je dost zavádějící neboť je jedná o slovo.

  1. proměnná "morseovyZnaky" je typu pole stringů a jeho členové jsou stringy. Proto přiřazení členu do proměnné "morseuvZnak" nemůže fungovat. Proměnná "morseuvZnak" musí logicky být typu string.
  2. myslím, že bys měl obsah foreach smyčky dočasně zakomentovat, své dílo si projít v debug režimu a sledovat, co se ti přiřazuje do proměnných.
 
Nahoru Odpovědět
30.4.2019 13:36
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
DoZby
Člen
Avatar
DoZby:1.5.2019 6:53

Děkuji všem za rady, zkusím to.

Nahoru Odpovědět
1.5.2019 6:53
Ztrácej svůj čas a čekej na zázrak
Avatar
Tomáš Novotný:1.5.2019 7:20

Mám dotaz spíše z pohledu přehlednosti. Proč nepoužít asociativní pole, kde je lépe vidět "a" => ".-" když iteruji. Prohozením index <=> value vytvořit encode a decode funkci
Z pohledu lenosti, proč nepoužít rovnou funkci pro nahrazení nebo regulární výraz a iteraci vůbec nepotřebuji?
Dokázal by někdo znalejší uvést pros a cons? Díky

Nahoru Odpovědět
1.5.2019 7:20
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Roman
Člen
Avatar
Odpovídá na DoZby
Roman:1.5.2019 8:05

Chce to osetrit vstupy. Kazdopadne na nize uvedenem se podivej jak se prochazi string...

static void Main(string[] args) {
           var morseovaAbeceda = new Dictionary<char, string>() {
               {'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', "--.."}
           };

           Console.Write("Zadej text: ");
           string inputText=Console.ReadLine().ToLower().Replace(" ", "");

           for (int i = 0; i< inputText.Length; i++) {
               Console.Write("{0}", morseovaAbeceda[inputText[i]]);
           }
           Console.WriteLine();
           foreach (char ch in inputText.ToCharArray()) {
               Console.Write("{0}", morseovaAbeceda[ch]);
           }
           Console.WriteLine();
           Console.ReadKey();
       }
 
Nahoru Odpovědět
1.5.2019 8:05
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 6 zpráv z 6.