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

Miniúkoly lze alternativně stáhnout i do Git repozitáře, stejně jako cvičení. Viz návod.

Ú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-closest-leap-year task05-vertices-distance task06-pen-pineapple-apple-pen task07-digit task08-powers-of-two task09-right-triangle task10-work-or-weekend

Stáhnout

Úkoly pro týden 3
10 úkolů
task01-array-basics task02-very-simple-functions task03-pointer-basics 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-norm task06-scalar-product task07-orthogonal task08-change-value task09-modify-string task10-median task11-reverse-array task12-split-array task13-pointer-array task14-print-odd

Stáhnout

Úkoly pro týden 5
11 úkolů
task01-rotate task02-words-split 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 task11-ctype-counts-table

Stáhnout

Úkoly pro týden 6
15 úkolů
task01-array-2D task02-realloc-2D task03-calloc task04-up256a task05-up256b task06-up256c task07-ptr-up256 task08-malloc-byte-array task09-malloc-byte-array-2 task10-malloc-byte-array-3 task11-malloc-byte-ptr-array task12-malloc-byte-ptr-array-2 task13-malloc-byte-ptr-array-3 task14-malloc-int-ptr-array task15-malloc-256

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ů