Tato úloha slouží k procvičení vnořených cyklů a dekompozici program na funkce. Není potřeba používat pole.
Naimplementujte program, který na standardní výstup vykreslí definovaný obrazec. V úloze si vyzkoušejte načítání vstupu, kontrolu správnosti vstupních hodnot a dekompozici program na samostatné funkce. Ze zadání definujte návratového hodnoty programu a chybové zprávy, které vypisujte na standardní chybový výstup.
Na standardní výstup vykreslete znakovou reprezentaci DNA dvoušroubovice, která je tvořena dvěma trojúhelníky, tvořené znakem X
nebo v případě definovaného vstupy znaky '\', '/', '|', '-'. Podle zadané velikosti, je dvoušroubovice spojená jednou nebo několika “příčkami”. Šroubovice jsou vždy spojeny v nejširším místě. Pokud jsou spojeny znakem '-', jsou dále spojeny dalšími příčníky a to tak, že je mezi nimi jeden řádek bez spojní, viz níže uvedné příklady.
Kontrola vstupu a případné vypsání chyby vychází z definové granularity chybových zpráv a odpovídá následujícímu pořadí.
Zadaná velikost nebo počet opakování není platné číslo (100
).
Zadaná velikost nebo počet opakování není v požadovaném intervalu (101
).
Zadaná velikost není liché číslo (102
).
Program vhodně dekomponujte na jednotlivé funkce tak, aby byl čitelný a přehledný.
Ve výpisu dvoušroubovice dbejte na bíle znaky (mezery), platný znak obrázku je zakončem symbolem nového řádku (
'\n'
). I znaky, které nejsou na první pohled viditelné jsou znaky, proto pro kontrolu můžete uložit standardní výstup programu do souboru a zobrazit jej v hexadecimálním tvaru například příkazem
hexdump -C
a porovnat s přiloženými vzorovými výstupy.Věnujte pozornost
Testování HW programů před odevzdáním.
| Povinné zadání |
Název v BRUTE | HW1 |
Odevzdávané soubory | main.c |
Argumenty při spuštění | žádné |
Kompilace pomocí | clang -pedantic -Wall -Werror -std=c99 |
Očekávaná časová složitost | $\mathcal{O}(n \cdot m)$, resp. $\mathcal{O}(n \cdot m + p \cdot p )$ |
Procvičované oblasti | použití vnořených cyklů |