Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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: Vigenerova šifra

Aktivity
Avatar
Petr Voborník:13.8.2017 16:44

Ahoj, mám problém v kódu ve Vigenerově šifrou. Místo toho aby mi kód šifroval celé slovo v závislosti na jednotlivých písmenech hesla, tak kód šifruje pouze správně v závislosti na 1. písmenu hesla. V příloze je kód i output.

Předem děkuji za odpověď.

Editováno 13.8.2017 16:45
 
Odpovědět
13.8.2017 16:44
Avatar
pocitac770
Tvůrce
Avatar
pocitac770:13.8.2017 19:27

Od 98 odčítáš hodnotu písmena z hesla, jelikož to bude vždy větší (písmena začínají právě 97 a pokračují dál), vznikne ti vždy záporné číslo, tedy kromě "a", kde odečítáš -1 (neboli přičítáš 1, tudíž to funguje "správně), a b, kdy odčítáš 0, tudíž se ti písmeno nezašifruje... Musíš změnit 2 věci, jednak odečítat od kódu písmene ono číslo vždy, aby jsi dostal kladný posun, a oním číslem musí být 96, aby v případě "a" vyšlo 97 - 96= 1 => posun o 1, příkad, "r", tedy 114, z toho máme 114 - 96 = 18, => posun o 18 míst.... dále pak vyřešit zakomponování posunu zpět na začátek abecedy, když to přesáhne hranice, ale to už snad zvládneš sám po tomto popostrčení :)

 
Nahoru Odpovědět
13.8.2017 19:27
Avatar
Odpovídá na pocitac770
Petr Voborník:13.8.2017 23:41

díky moc

 
Nahoru Odpovědět
13.8.2017 23:41
Avatar
Petr Voborník:18.8.2017 15:01

Ahoj,

mám problém u opakování k lekci 10-11 (Středně pokročilý příklad). Při prvním zapsání v cyklu mohu zapsat obě souřadnice, při druhém už lze zapsat jen jedna. V příloze je zdroják i output.

Předem děkuji za odpověď.

 
Nahoru Odpovědět
18.8.2017 15:01
Avatar
Odpovídá na Petr Voborník
Patrik Valkovič:18.8.2017 15:07

Zřejmě ti tam zůstává enter z minulého vstupu, který přečteš tím znakem (takže ve skutečnosti nečteš A ale enter a potom, když chceš číst enter, tak přečteš to A). Zkus dát mezeru do toho scanf

scanf(" %c");
scanf(" %d");

Ta mezera by měla odignorovat všechny bílé znaky.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
18.8.2017 15:07
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Petr Voborník:18.8.2017 15:09

díky to pomohlo

 
Nahoru Odpovědět
18.8.2017 15:09
Avatar
Petr Voborník:20.8.2017 11:51

Ahoj,

mám problém s piškvorkami. Při vpisování "O" do terminálu se "O" posune. V příloze zasílám kód i output.

Předem děkuji za odpověď.

 
Nahoru Odpovědět
20.8.2017 11:51
Avatar
Odpovídá na Petr Voborník
Matúš Olejník:20.8.2017 12:50

Ahoj,

ako myslíš, že posunie? Veď B7 ti "O" vypísalo správne, skôr máš problém v tom, že pozíciu predchádzajúceho ti neuložilo či mýlim sa? Taktiež to "X" na pozícii 5 4 slúži zatiaľ len na testovanie? A premenná "k" nie je vidno na čo slúži. Pošli celý kód a môžeme to spojazdniť :)

Nahoru Odpovědět
20.8.2017 12:50
/* I am not sure why this works but it fixes the problem */
Avatar
Odpovídá na Matúš Olejník
Petr Voborník:20.8.2017 13:10

Když se pořádně podíváš na output, tak je vidět, že "O" je nejdříve na pozici A6 a poté na pozici B7. Je to způsobené tím, že se mi po opakování cyklu "O" změní znovu na " ", tudíž se mi to neukládá do pole. To "X" na pozici 5 4 není testování, ale pevně daný začátek a proměnná "k" slouží k inicializaci levého sloupce.

 
Nahoru Odpovědět
20.8.2017 13:10
Avatar
Odpovídá na Petr Voborník
Matúš Olejník:20.8.2017 13:26

Hej pozeral som, mne išlo o to, že to "O" na pozícii B7 je správne, len je chyba v tom, že to "O" na pozícii A6 sa prepísalo.

Ja by som ešte pred tým, než sa načnem pýtať kam chce užívateľ vložiť "O", inicializoval jednotlivé prvky pola piskvorky na prázdnu hodnotu ' '.

for (i = 0; i < 9; i++) {
        for (j = 0; j < 9; j++) {
                piskovorky[i][j] = ' ';
        }
}

A až potom sa v cykle pýtaj kam chce dať "0", teda zadá ti súradnicu X a Y a už len jednoducho spravíš aby

piskvorky[x][y] = 'O';

a opäť vypíšeš celé pole.

Nahoru Odpovědět
20.8.2017 13:26
/* I am not sure why this works but it fixes the problem */
Avatar
Petr Voborník:31.8.2017 15:21

Ahoj, mám problém se středně pokročilým úkolem v opakování k lekci 12. Místo toho, aby se mě zeptal o kolik znaků, chci větu "ahoj svete" zkrátit a následně mi danou větu zkrátil, tak mi to akorát napíše číslo. Kód i output je v příloze.

Předem děkuji za odpověď.

 
Nahoru Odpovědět
31.8.2017 15:21
Avatar
Odpovídá na Petr Voborník
Patrik Valkovič:31.8.2017 15:53

Už jsem odpovídal, zkus se nad tím zamyslet.

Nahoru Odpovědět
31.8.2017 15:53
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Patrik Valkovič
Petr Voborník:31.8.2017 16:29

jak si to stále nepomáhá

 
Nahoru Odpovědět
31.8.2017 16:29
Avatar
Odpovídá na Petr Voborník
Matúš Olejník:31.8.2017 17:41

http://gribblelab.org/…vs_Heap.html

Vždy keď vytváraš vo funkcii nejaké premenné tak sú uložené v stacku a teda ak sa funkcia skončí tak sa pamäť uvoľní a dáta sa "stratia". Preto keď chceš nejako upraviť svoju premennú deklarovanú vo funkcii main tak sprav funkciu ktorá bude potrebovať len pointer na túto premennú alebo deklaruj túto premennú ako globálnu alebo môžeš priamo z funkcie returnúť to čo potrebuješ alebo to celé sprav vo funkcii main.

Nahoru Odpovědět
31.8.2017 17:41
/* I am not sure why this works but it fixes the problem */
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 14 zpráv z 14.