{{indexmenu_n>1}}
======== HW 01 - Kreslení (ASCII art) ========
^ Termín odevzdání | 04.03.2017 23:59 PST |
^ Povinné zadání | 3b |
^ Volitelné zadání | není |
^ Bonusové zadání | není |
^ Počet uploadů | 10 |
Tato úloha slouží k procvičení vnořených cyklů. Není potřeba používat pole.
======= Povinné zadání =======
* Program ze standardního vstupu načtěte dvě přirozená čísla v rozsahu 3 až 69, včetně obou těchto krajních hodnot.
* Z načtených čísel "vykreslete" na standardní výstup domeček podle předlohy níže.
* První číslo udává šířku domečku, druhé výšku domečku. Viz Příklad 1.
* Pokud se nepodaří načíst obě čísla, tak vypište na standardní chybový výstup zprávu: "''Error: Chybny vstup!''" a program ukončete s návratovou hodnotou ''100''. Viz Příklad 2.
* Obě čísla (jak šířka, tak výška) musí být v daném intervalu. V případě, že tomu tak není, vypište na standardní chybový výstup zprávu: "''Error: Vstup mimo interval!''" a program ukončete s návratovou hodnotou ''101''. Viz Příklad 3.
* První číslo reprezentující šířku musí být vždy liché. Pokud tomu tak není vypište na standardní chybový výstup chybovou hlášku: "''Error: Sirka neni liche cislo!''", v takovém případě je návratová hodnota programu ''102''. Viz Příklad 4.
* Každý řádek končí znakem nového řádku, který je ihned za posledním symbolem na řádku ''('X')'', nebo ''('|')'' pro kreslení domečku s plotem.
* **V případě, že jsou první dvě čísla shodná**, načtěte třetí kladné celé číslo, které udává délku a výšku plotu.
* Výška plotu musí být kladná a ostře menší než je výška domu. V případě, že tomu tak nebude, uvědomte o tom uživatele zprávou na standardní chybový výstup ve znění: "''Error: Neplatna velikost plotu!''" a program ukončete s návratovou hodnotou 103. Viz Příklad 5 a 6.
* Horizontální části plotu jsou vždy na prvním a posledním řádku plotu. Pravá část plotu končí vždy svislou plaňkou, takže první řádek plotu vypadá pro velikost 2 takto: "''-|''", pro velikost 3: "''|-|''" a pro velikost 4: "''-|-|''" atd.
* Domeček s plotem je vyplněn znaky 'o' a '*', přičemž v levém horním rohu je vždy znak 'o' a znaky tvoří diagonály.
=== Pořadí kontroly vstupu: ===
Kontroly vstupu a případné vypsání chyby musí být provedeno v předem zadaném pořadí:
- Zadaná šířka domu, výška domu nebo šířka plotu není platné číslo (''100'')
- Zadaná šířka nebo výška není v požadovaném intervalu (''101'')
- Zadaná šířka není liché číslo (''102'')
- Kontrola velikosti plotu (Chyba ''103'')
==== Příklad 1 - pub01 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
7 4
|
X
X X
X X
XXXXXXX
X X
X X
XXXXXXX
| žádný | 0 |
==== Příklad 2 - pub02 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
x 16
| žádný |
Error: Chybny vstup!
| 100 |
==== Příklad 3 - pub03 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
-4 16
| žádný |
Error: Vstup mimo interval!
| 101 |
==== Příklad 4 - pub04 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
8 21
| žádný |
Error: Sirka neni liche cislo!
| 102 |
==== Příklad 5 - pub05 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
9 9 6
|
X
X X
X X
X X
XXXXXXXXX
Xo*o*o*oX
X*o*o*o*X
Xo*o*o*oX-|-|-|
X*o*o*o*X | | |
Xo*o*o*oX | | |
X*o*o*o*X | | |
Xo*o*o*oX | | |
XXXXXXXXX-|-|-|
| žádný | 0 |
==== Příklad 6 - pub06 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
5 5 x
| žádný |
Error: Chybny vstup!
| 100 |
==== Příklad 7 - pub07 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
5 5 10
| žádný |
Error: Neplatna velikost plotu!
| 103 |
====== Odevzdání ======
Veřejné příklady + Makefile: {{:courses:b3b36prg:hw:hw01.zip|}}
Výpisu domečku 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 příkazem ''hexdump -C'' a porovnat s přiloženými vzorovými výstupy.
^ ^ Povinné zadání ^
^ Název v BRUTE | HW01 |
^ Odevzdávané soubory | main.c |
^ Argumenty při spuštění | žádné |
^ Kompilace pomocí | gcc -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ů |