Warning
This page is located in archive. Go to the latest version of this course pages.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
courses:b0b36prp:hw:hw05 [2019/10/23 16:20]
kubikji2 [Příklad 1 - pub01-o] typo
courses:b0b36prp:hw:hw05 [2019/11/14 07:02]
faiglj [Povinné zadaní]
Line 10: Line 10:
 =====  Povinné zadaní =====  =====  Povinné zadaní ===== 
  
-Naším úkolem je rozluštit zprávu zakódovanou [[https://​en.wikipedia.org/​wiki/​Caesar_cipher|Caesarovou šifrou]], která funguje na principu záměny písmene z abecedy za písmeno posunuté o pevně určený počet míst. V našem případě máme k dispozici nejen zašifrovaný text, ale také nespolehlivě odposlechnuté originální znění zprávy, tj. některé znaky originální zprávy jsou chybně zapsány. Řešení tak můžeme založit na testování všech možností kódování Caesarovou šifrou a porovnání s odposlechnutým textem. Posun s největší shodou dekódovaného textu s odposlechnutou ​zprávu ​budeme považovat za správný a takto dekódovaný text je náš požadovaný výstup. Obecně nemusí tento postup vést na unikátní správné řešení, nicméně v testovaných případech vždy existuje unikátní řešení.+Naším úkolem je rozluštit zprávu zakódovanou [[https://​en.wikipedia.org/​wiki/​Caesar_cipher|Caesarovou šifrou]], která funguje na principu záměny písmene z abecedy za písmeno posunuté o pevně určený počet míst. V našem případě máme k dispozici nejen zašifrovaný text, ale také nespolehlivě odposlechnuté originální znění zprávy, tj. některé znaky originální zprávy jsou chybně zapsány. Řešení tak můžeme založit na testování všech možností kódování Caesarovou šifrou a porovnání s odposlechnutým textem. Posun s největší shodou dekódovaného textu s odposlechnutou ​zprávou ​budeme považovat za správný a takto dekódovaný text je náš požadovaný výstup. Obecně nemusí tento postup vést na unikátní správné řešení, nicméně v testovaných případech vždy existuje unikátní řešení.
  
-Jedním z cílů tohoto domácího úkolu je procvičení <wrap alert>​dynamické alokace paměti na základě velikosti vstupu</​wrap>​. Proto délka vstupního textu není dopředu známa a je nutné v případě vyčerpání počáteční ​velikost ​(např. 10-100 znaků) dynamicky alokovat prostor větší, např. funkcí ''​realloc''​() pro dvojnásobnou délku. V programu používejte pouze množství paměti, které řádově odpovídá zadanému vstupu. Odevzdávací systém kontroluje velikost dynamicky alokované paměti.+Jedním z cílů tohoto domácího úkolu je procvičení <wrap alert>​dynamické alokace paměti na základě velikosti vstupu</​wrap>​. Proto délka vstupního textu není dopředu známa a je nutné v případě vyčerpání počáteční ​velikosti ​(např. 10-100 znaků) dynamicky alokovat prostor větší, např. funkcí ''​realloc''​() pro dvojnásobnou délku. V programu používejte pouze množství paměti, které řádově odpovídá zadanému vstupu. Odevzdávací systém kontroluje velikost dynamicky alokované paměti.
  
 **Použitá abeceda se skládá pouze z malých a velkých písmen bez diakritiky, tj. znaky v rozsahu [a-zA-Z].** **Použitá abeceda se skládá pouze z malých a velkých písmen bez diakritiky, tj. znaky v rozsahu [a-zA-Z].**
  
 <note tip>Pro načítání vstupu používejte pouze funkci **''​getchar()''​** nebo **''​scanf("​%c",​...)''​** tak, abyste si vyzkoušeli dynamickou alokaci paměti podle aktuálně potřeby odpovídající načítanému vstupu. ​ <note tip>Pro načítání vstupu používejte pouze funkci **''​getchar()''​** nebo **''​scanf("​%c",​...)''​** tak, abyste si vyzkoušeli dynamickou alokaci paměti podle aktuálně potřeby odpovídající načítanému vstupu. ​
 +
 +Každný řádek na vstupu je zakončen znakem **'​\n'​**. Na testovacím serveru běží OS Debian, takže se jedná o jeden znak LF **0x0a**. (Na Windows se používají dva znaky CR+LF.)
  
 Použití metody dynamického načítání textového řetězce prostřednictvím rozšíření scanf("​%ms"​) nebo scanf("​%as"​) není z tohoto důvodu povoleno.</​note>​ Použití metody dynamického načítání textového řetězce prostřednictvím rozšíření scanf("​%ms"​) nebo scanf("​%as"​) není z tohoto důvodu povoleno.</​note>​
courses/b0b36prp/hw/hw05.txt · Last modified: 2019/11/14 07:04 by faiglj