NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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í.

Diskuze – Lekce 11 - Textové řetězce v C# podruhé - Práce s jednotlivými znaky

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
tasuro
Člen
Avatar
Odpovídá na Josef Theuer
tasuro:13.3.2020 17:14

Tak samozřejmě, že někteří odpadnou. A nebo prostě potřebovali vysvětlit nějakou látku kvůli škole a zbytek již chápou ze školy.

 
Odpovědět
13.3.2020 17:14
Avatar
Marek Vajčner:14.3.2020 13:16

No popravdě já dodnes slyšel jen o šifře mistra Leonarda. :-D Nicméně v případě Cézarovi šifry už alespoň trochu vím o co jde.

 
Odpovědět
14.3.2020 13:16
Avatar
Alesh
Tvůrce
Avatar
Alesh:11.6.2020 9:55

Nechci rejpat :-), ale když se v článku tvrdí:

Všimněme si, že nikde nepoužíváme přímé kódy znaků, v podmínce je (int)'z', i když bychom tam mohli napsat rovnou 122.

Tak by místo:

if (i > (int)'z')
    i -= 26;

Mělo být:

if (i > (int)'z')
    i -= (int)'z' - (int)'a' + 1;       // Přetypování není nezbytné, funguje to i bez něj.
 
Odpovědět
11.6.2020 9:55
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Alesh
David Hartinger:11.6.2020 10:17

26 není kód znaku, ale počet znaků v abecedě.

Odpovědět
11.6.2020 10:17
New kid back on the block with a R.I.P
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na David Hartinger
Alesh:11.6.2020 10:35

No, dobře, ale situace je zcela analogická, uživatel se může splést, jak v samotném kódu znaku, tak v počtu znaků abecedy. Davide, dej mi za pravdu, dík. :-)

 
Odpovědět
11.6.2020 10:35
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Alesh
David Hartinger:11.6.2020 16:51

Já třeba vím, že je v abecedě 26 písmen, když to někdo neví, tak je to asi lepší odečíst, ale zas se může splést na tom jak tam musíš dát + 1.

Odpovědět
11.6.2020 16:51
New kid back on the block with a R.I.P
Avatar
Savi
Člen
Avatar
Savi:21.6.2020 11:47

Tak jsem si příklady vyzkoušel a to včetně dešifrování textu zpět. Nicméně jsem nepoužil podmínku přetečení. Jeden z důvodů byl, že stejně neošetřila mezery nebo interpunkci v celých větách a ty "ošklivé" znaky mi v šifrovaném textu přišli OK.
Ale k otázce... Bylo by vůbec možné dešifrovat text zpět s použitím této podmínky přetečení, pokud si v programu mohu zvolit i počet míst, o které znaky posouvám ? Asi bychom museli použít ještě nějaké jiné proměnné, které by dávali info o původním textu, že ??

Děkuji moc!

 
Odpovědět
21.6.2020 11:47
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Savi
Alesh:21.6.2020 17:24

Cézarova šifra je spíš taková legrácka než metoda, jak něco opravdu bezpečně zašifrovat, to je snad jasné. Možná ještě v době, kdy neexistovaly počítače, že to mohlo mít nějaké reálné využití, samozřejmě za předpokladu, že ten posun se udělal o nějaký "těžko odhadnutelný" posun. Dnes bys velmi jednoduše naprogramoval nástroj, který by zkoušel různé posuny a "na oči" bys posoudil, zda ten text po tom posunu je ten původní nezašifrovaný.
Pokud jde o tvůj dotaz, tak tam bys v podstatě asi mohl udělat 2 věci:

  1. naprogramovat "šifrovač" a "dešifrovač", v každém z nich by byl natvrdo nastavený posun o "n" znaků (šifrovač posunu tedy o "n" a "dešifrovač" o "-n").
  2. variantou je mít jeden nástroj, kde bude možná zadat posun uživatelem. Pak jinou cestou příjemci sdělíš posun, pak mu pošleš zprávu a on si i zas posune o -posun.

Ale jak jsem již psal, tuto úlohu ber jen jako cvičení s char proměnnými, reálné využití k šifrování to prostě nemá, čili tvoje úvahy jsou v tomto smyslu víceméně zbytečné.

 
Odpovědět
21.6.2020 17:24
Avatar
drevpe
Člen
Avatar
drevpe:2.7.2020 15:47

Ahoj jen taková poznámka.
dnes zkouším kód z článku a kompilátor mi hlásí error
Error 1 The best overloaded method match for 'string.Conta­ins(string)' has some invalid arguments
Error 2 Argument 1: cannot convert from 'char' to 'string'

když zkonvertuji tak je to ok.

foreach (char c in s)
{
    if (samohlasky.Contains(c))
        pocetSamohlasek++;
    else if (souhlasky.Contains(Convert.ToString(c)))
        pocetSouhlasek++;
}
 
Odpovědět
2.7.2020 15:47
Avatar
drevpe
Člen
Avatar
Odpovídá na drevpe
drevpe:2.7.2020 15:59

škoda že nemůžu editovat komentář...
už vím čím to je... .NET Framework verze a použití using System.Linq

 
Odpovědět
2.7.2020 15:59
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 115.