Letní akce PHP týden
Pouze tento týden sleva až 80 % na kurzy PHP. Lze kombinovat s akcí Letní slevy na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!

Diskuze: Převod stringu na char

Aktivity (4)
Avatar
Freezy
Člen
Avatar
Freezy:29. dubna 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. dubna 6:26
Když něco chceš, tak věř, že toho dosáhneš a víra tvá, ti to dá
Avatar
Odpovídá na Freezy
Michal Štěpánek:29. dubna 6:36

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

Editováno 29. dubna 6:37
Nahoru Odpovědět 29. dubna 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. dubna 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. dubna 13:36
Avatar
Freezy
Člen
Avatar
Freezy:1. května 6:53

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

Nahoru Odpovědět 1. května 6:53
Když něco chceš, tak věř, že toho dosáhneš a víra tvá, ti to dá
Avatar
Tomáš Novotný:1. května 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. května 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 Freezy
Roman:1. května 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. května 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.