Miniúkoly

Cílem miniúkolů je poskytnout vám, studentům, sbírku jednoduchých příkladů, na kterých si můžete vyzkoušet základní koncepty prezentované na přednášce. Náročností jsou obvykle na úrovni příkladů ze cvičení.

Tyto úkoly nejsou hodnocené ani povinné. Můžete si je vypracovat kdykoliv.

Sady

Úkoly pro týden 1 1 úkol
task01-hello_world

Stáhnout

Úkoly pro týden 2 10 úkolů
task01-alphanumeric task02-interval task03-sizeof task04-closestLeapYear task05-verticesDistance task06-PPAP task07-digit task08-powersOfTwo task09-rightTriangle task10-workOrWeekend

Stáhnout

Úkoly pro týden 3 10 úkolů
task01-array_basics task02-very_simple_functions task03-pointer_basic task04-array_pointers task05-function_madness task06-unit_conversions task07-pointer_arguments task08-pointer_jumper task09-loaders task10-min_max_functions

Stáhnout

Úkoly pro týden 4 14 úkolů
task01-swap task02-array_max task03-matrix_min task04-matrix_sum task05-vector_length task07-scalar_product task08-ortogonal task09-change_value task10-func_ptr task11-median task12-reverse_array task13-split_array task14-pointer_array task15-print_odd

Stáhnout

Úkoly pro týden 5 11 úkolů
task01-rotate task02-words_split task03-ctype_counts_table task03-string_stat task04-write_lower_upper task05-substring_count task06-replace_substring task07-palindrome task08-trim_whitespace task09-sort_strings task10-cvs_nth_column

Stáhnout

Úkoly pro týden 6 15 úkolů
task01-array2D task02-realloc2D task03-calloc2 task04-up256 task05-up256a task06-up256b task07-ptrUp256 task08-malloc256 task09-malloc_byte_array task10-malloc_byte_array2 task11-malloc_byte_array3 task12-malloc_byte_ptr_array task13-malloc_byte_ptr_array2 task14-malloc_byte_ptr_array3 task15-malloc_int_ptr_array

Stáhnout

Úkoly pro týden 7 10 úkolů
task01 task02 task03 task04 task05 task06 task07 task08 task09 task10

Stáhnout

Úkoly pro týden 8 10 úkolů
task-fileio-01 task-fileio-02 task-fileio-03 task-fileio-04 task-fileio-05 task-fileio-06 task-stdio-01 task-stdio-02 task-stdio-03 task-stdio-04

Stáhnout

Úkoly pro týden 9 8 úkolů
task-areaof task-avgntree task-caesar task-fibonacci task-levelsum task-postorder task-qsort task-transform

Stáhnout

Úkoly pro týden 10 10 úkolů
task-absolute-value task-debuging task-implication-equivalence task-min-max task-obfuscation task-odd-even task-overwrite-sabotage task-powerTwo-divTwo-square task-range task-sum-diff-multiply

Stáhnout

Informace

Popis adresářové struktury

Každá sada obsahuje kořenový CMakeLists.txt, který můžete otevřít ve svém oblíbeném IDE. Dále zde naleznete adresáře s příklady.

Adresáře s příklady obsahují následující soubory:

  • CMakeLists.txt

  • source.c — soubor se zadáním, vaše řešení pište zde

  • solution.c — vzorové řešení

Navíc tyto adresáře obsahují testovací sady. Každá testovací sada s názvem NAME je definována alespoň jedním z těchto souborů:

NAME.in

standardní vstup; pokud neexistuje, pak je vstup prázdný

NAME.out

očekávaný standardní výstup; pokud neexistuje, pak nesmí program na výstup vypsat nic

NAME.err

očekávaný chybový výstup; pokud neexistuje, pak nesmí program na chybový výstup vypsat nic

NAME.args

parametry pro program, na každém řádku jeden

Automatické testování (Aisa)

Pokud úkol vypracujete na stroji Aisa, můžete na testování použít skript test-miniukol, který zkontroluje vaše řešení proti dodaným testovacím sadám.

Pokud jste v adresáři s řešením (hledá se soubor source.c), pak zavolejte skript

aisa$ /home/kontr/test-miniukol

který sám nalezne všechny sady v aktuálním pracovním adresáři a spustí je. Skript má také další vlastnosti, vyzkoušejte:

aisa$ /home/kontr/test-miniukol --help
aisa$ /home/kontr/test-miniukol --diff NazevSady

Manuální testování (Linux)

Úkoly můžete vypracovat v libovolném pořadí. Pokud si nějaký úkol vyberete, můžete jej vypracovat následujícím způsobem:

  • nejdříve otevřete source.c vybraného příkladu a přečtěte si zadání,

  • podívejte se na příklady vstupů a argumentů v souborech .in a `.args`,

  • zkuste řešení vypracovat podle zadání.

Na systému Linux (např. Aise) můžete testovat sadu následujícím způsobem:

  • sada bez vstupu a argumentů

    program >stdout 2>stderr
    
    # pokud existuje SADA.out:
    diff -U0 SADA.out stdout
    
    # pokud existuje SADA.err:
    diff -U0 SADA.err stderr
  • sada se vstupem

    program <SADA.in >stdout 2>stderr
    
    # ...
  • sada s argumenty

    xargs -a SADA.args -d'\n' program >stdout 2>stderr
    
    # ...
  • ostatní kombinace snad jednoduše odvodíte z výše uvedených příkladů