Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 10. diel - Textové reťazce v jazyku C ++ druhýkrát - Práca so znakmi

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
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

Avatar
Odpovedá na Tomáš Lipert
Patrik Valkovič:20.3.2019 13:20

Díky, opraveno.

Odpovedať
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.

Avatar
DarkCoder
Člen
Avatar
Odpovedá 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.

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

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

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?

Avatar
DarkCoder
Člen
Avatar
Odpovedá 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)

Odpovedať
"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

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 8 správy z 18.