NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze – Lekce 12 - Textové řetězce v C# do třetice - Split a Join

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Dušan Kovářík:8.6.2018 0:11

Kódování do Morseovy abecedy jsem udělal v podstatě jen úpravou kódu pro jeho dekódování. Místo cyklu

foreach

jsem použil

for

, v němž jsem si uložil Morseovy znaky kódované zprávy do prvků pole

string

ů, abych si mohl následně vyzkoušet metodu Join().

// řetězec, který chceme zakódovat
string zprava = "itnetwork";
Console.WriteLine("Původní zpráva: {0}", zprava);

// vzorová pole
string abecedniZnaky = "abcdefghijklmnopqrstuvwxyz";
string[] morseovyZnaky = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
    "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
    "...-", ".--", "-..-", "-.--", "--.."};

// pole znaků pro zakódovanou zprávu v morzeovce
string[] znaky = new string[zprava.Length];

// iterace abecedních znaků
int index;
for (int i = 0; i < zprava.Length; i++)
{
    znaky[i] = "?";
    index = abecedniZnaky.IndexOf(zprava[i]);
    if (index >= 0) // znak nalezen
        znaky[i] = morseovyZnaky[index];
}

// spojení pole znaků se zakódovanou zprávou do jednoho řetězce
string s = String.Join(" ", znaky);

Console.WriteLine("Zakódovaná zpráva: {0}", s);
Console.ReadKey();
 
Odpovědět
8.6.2018 0:11
Avatar
Odpovídá na Dušan Kovářík
Dušan Kovářík:8.6.2018 1:09

Omlouvám se za rozsekaný text na začátku před kódem :)

 
Odpovědět
8.6.2018 1:09
Avatar
Odpovídá na Marek Kaczmarczyk
Tibor Galloš:23.10.2018 15:13

Presne tak isto som to napísal aj ja :)

Odpovědět
23.10.2018 15:13
Všetko je možné.
Avatar
David Hirka
Člen
Avatar
David Hirka:16.11.2018 11:35

Moje zpětné zakódování. Pro hledání indexu jsem použil pole. Asi trochu složitější ale funguje mi i dvojitá mezera mezi slovy:

                        // řetězec, který chceme dekódovat
            Console.WriteLine("Zadejte zprávu k zakódování:");
            string s = Console.ReadLine().ToLower();
            Console.WriteLine("Původní zpráva: {0}", s);
            // řetězec s dekódovanou zprávou
            string zprava = "";

            // vzorová pole
            char[] 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', ' ' };
            string[] morseovyZnaky = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--..", " "};

            foreach(char morseuvZnak in s)
            {
                string abecedniZnak = "?";
                int index = Array.IndexOf(abecedniZnaky, morseuvZnak);
                if (index >= 0) // znak nalezen
                    abecedniZnak = morseovyZnaky[index];
                zprava += abecedniZnak;
                zprava += " ";
            }
            Console.WriteLine("Zakódovaná zpráva: {0}", zprava);
            Console.ReadKey();
Editováno 16.11.2018 11:38
 
Odpovědět
16.11.2018 11:35
Avatar
Jan Křížek:21.11.2018 18:47

Zpětné zakódování do morseovi abecedy jsem zapsal takto:

// řetězec se zakódovanou zprávou
string[] znaky = new string[s.Length];

// iterace znaků morseovky
int i = 0;
foreach (char Znak in s)
{
string morseZnak = "?";
int index = alfabeta.Inde­xOf(Znak);
if (index >= 0) // znak nalezen
morseZnak = morse[index];
znaky[i] += morseZnak;
i++;
}
// slepení řetězce na znaky morseovky
Console.Write­Line($"Dekódo­vaná zpráva: {string.Join(" ",znaky)}");

A funguje bez problému :)

 
Odpovědět
21.11.2018 18:47
Avatar
Patrik Pastor:31.12.2018 15:47

Jaky datovy typ bere metoda s.Join() do argumntu? Používám ji u pole, ale pořd mi vyskakuje že je nulové přetíženi. Díky z odpoved.

 
Odpovědět
31.12.2018 15:47
Avatar
Odpovědět
31.12.2018 17:37
Neaktivní uživatelský účet
Avatar
Patrik Pastor:1.1.2019 1:56

Hezký den, chtěl jsem se zeptat, nevíte proč se mi nic nezobrazí (kód pro převedení z slova na morseův znak):

string s = "patrik";
string zprava = "";
string [] abeceda = { "abcdefghijklmnop­qrstuvwxyz" };
string[] morseovka = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--.."};
string[] znak = s.Split(' ');

foreach (string AB in znak)
{
string morseuvznak = "";
int index = Array.IndexOf(a­beceda, AB);
if (index >= 0)
morseuvznak = morseovka[index];
zprava += morseuvznak;
}
Console.Write­Line(zprava);
Console.ReadKey();

Dík za odpověď

 
Odpovědět
1.1.2019 1:56
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Patrik Pastor
pocitac770:1.1.2019 6:53

Používáš pole stringů, kde na první pozici máš celou abecedu. To je oním problémem. Hledáš konkrétní znak v onom poli, ale ten tam nenajdeš, protože tam... Není.
Můžeš na to jít buď tak, že budeš mít pole charů jednotlivých znaků abecedy, kde budeš hledat onen znak a pak ho připisovat, nebo použiješ samostatný string, a následně hledat znak na pozici x ve stringu

 
Odpovědět
1.1.2019 6:53
Avatar
Odpovídá na Patrik Pastor
Neaktivní uživatel:1.1.2019 10:58

A krom toho co psal pocitac770 jsi asi chtěl použít <code>s.ToCha­rArray()</code>.

Odpovědět
1.1.2019 10:58
Neaktivní uživatelský účet
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 10 zpráv z 90.