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 jazyce C++ podruhé - Práce se 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
Tomáš Lipert:20.3.2019 12:54

Chtěl bych ohlási, že u analýzi ve větě máte v samohláskách dvakrát velké u a ve souhláskách tam máte velké a malé i

 
Odpovědět
20.3.2019 12:54
Avatar
Odpovídá na Tomáš Lipert
Patrik Valkovič:20.3.2019 13:20

Díky, opraveno.

Odpovědět
20.3.2019 13:20
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Branislav Mráz:18.4.2020 10:03

ASCII hodnota: Prosim, mohli by ste mi naznacit, kde ste vysvetlovali takuto inicializaciu: "i = (int)c;" Asi som nepozorny, lebo si neviem spomenut. A este vysvetlit, preco mi to funguje aj bez "(int)", resp. "(char)". Vdaka B.

 
Odpovědět
18.4.2020 10:03
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Branislav Mráz
DarkCoder:18.4.2020 14:22

Jazyk C se při míchání datových typů řídí striktními konverzními pravidly. Jedním z takových pravidel je tzv. Podpora Celých Čísel. To říká, že kdykoli je ve výrazu použita proměnná typu char nebo short int, je její hodnota během vyhodnocování vyrazu automaticky rozšířena na int. Proto se může proměnná typu char používat tam, kde lze použít proměnnou typu int.

Odpovědět
18.4.2020 14:22
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Branislav Mráz:19.4.2020 22:35

ok, dakujem za pokus o vysvetlenie druhej polovice mojho dotazu.

 
Odpovědět
19.4.2020 22:35
Avatar
David K
Člen
Avatar
David K:12.5.2020 10:34

Ja jsem si udělal takový malý šifrovací prográmek, bohužel si příliš nevím rady s tím, jak ho odšifrovat:

int main(void){
    string s;
    string t;
    cout << "Zadejte zpavu pro sifrovani:";
    getline(cin, s);
    cout << "Vysledek je:";
    for (int i = 0; i < s.length(); i++)
    {
        t[i] = s[i] + t[i - 1] + 1;
        for (;t[i] > 'z';)
        {
            t[i] = t[i] - 26;
        }
        for (; t[i] < 'a';)
        {
            t[i] = t[i] + 26;
        }
        cout << t[i];
    }
    cout << endl;
    cin.get();
    return 0;
}

Neměl by prosím někdo nápad, co s tím?

 
Odpovědět
12.5.2020 10:34
Avatar
DarkCoder
Člen
Avatar
Odpovídá na David K
DarkCoder:12.5.2020 14:55

Ja jsem si udělal takový malý šifrovací prográmek, bohužel si příliš nevím rady s tím, jak ho odšifrovat:

V šifrování docela zásadní věc. Ty jako tvůrce bys měl nejlépe vědět, jak šifra funguje. Tedy měl bys vědět, jaké kroky si provedl k modifikaci řetězce. Je třeba postupovat v obráceném pořadí s opačným funkčním efektem. Pokud např. k písmenu přičtu jedna abych ho pozměnil na následují písmeno, pak k tomu, abych získal původní písmeno je zase třeba jedna odečíst. Pro zprávu zakódovanou pomocí XOR je třeba pro její dekódování XOR volat znovu, apod.

Když budeš vědět jak má šifra fungovat, můžeš začít tvořit program k zašifrování zprávy. Tvůj program obsahuje chyby, takže tvým úkolem je poladit program k šifrování dřív než se vrhneš na dešifrovací část.

Program nemůže být úplný pokud mu chybí nějaká část. V tomto případě kompletní hlavička, funkce které používáš jsou někde definované. Hlavní cyklus for provádí traversování celého řetězce, nač tedy pak využíváš vnitřní for cykly.

t[i] = s[i] + t[i - 1] + 1;

Tento příkaz má dvě zásadní chyby. Ta první je, že pracuješ s indexem pole aniž bys znal jeho obsah. Ta druhá je že pracuješ s indexem pole jehož hodnota je při první iterakci cyklu for záporná (pro i=0 je index -1) a tudíž Ti program musí hodit běhovou chybu.

Pozn: V C++ je definování funkce která nemá parametry pomocí klíčového slova void zbytečné. (Není to však chyba)

Odpovědět
12.5.2020 14:55
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Kateřina H.
Člen
Avatar
Kateřina H.:29.8.2021 15:41

V části Analýza výskytů ve větě se mluví o písmenech, kde by se mělo mluvit o číslech.

Nejprve si připravme kód, definujme si samohlásky, souhlásky a písmena. Počet zbylých znaků nemusíme počítat, bude to délka řetězce mínus součet samohlásek, souhlásek a písmen.

V kódu už je to pak dobře. Ale docela jste mě vyděsili, že jsou nějaká další písmena než souhlásky a samohlásky, o kterých nevím :-D

 
Odpovědět
29.8.2021 15:41
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 8 zpráv z 18.