{{indexmenu_n>4}}
======== HW 05 - Kreslení (ASCII art) ========
^ Termín odevzdání ^ 24.11.2024 7:00 |
^ Bodový zisk | 6b (2+2+2) |
^ Počet uploadů | 10 |
^ Typ zadání | volitelné |
Tato úloha slouží k procvičení vnořených cyklů. Není potřeba používat pole. Použití pole může být penalizováno.
Úloha je koncipována na získání i částečného bodového zisku (3 nebo 6 bodů). **Je třeba, aby fungovaly vždy předchozí zadání** (v zadání B, musí fungovat i zadání A; v zadání C musí fungovat zadání A i B).
======= Společné zadání =======
* Program ze standardního vstupu načte 1-3 přirozených čísel v rozsahu 3 až 69, včetně obou těchto krajních hodnot. 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 A3.
* Pokud se nepodaří načíst číslo, 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 A2.
* Každý řádek končí znakem nového řádku '' '\n' '', který je ihned za posledním symbolem na řádku '' 'X' '', nebo '' '|' '' pro zadání C.
* Textová informace o chybě je vypsaná na standardní chybový výstup a je zakončena znakem nového řádku.
======= Zadání A (2b) =======
* Načtěte jedno číslo a "vykreslete" na standardní výstup čtvereček podle předlohy A1 níže.
======= Zadání B (2b) =======
* Zadání A (Uvědomte si možné vstupy)
* Načtěte dvě čísla a "vykreslete" na standardní výstup domeček podle předlohy B1 a B2 níže. Vstup načítejte po jednom čísle
* První číslo udává šířku domečku, druhé výšku domečku. Viz Příklad B1 a B2.
* 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 B3.
* Pokud šířka a výška jsou stejné, čtvereček je vyplněn znaky '' 'o' '' a '' '*' '', přičemž v levém horním rohu je vždy znak '' 'o' '' a znaky tvoří šachovnici jako je v příkladu B2 nebo C3. Pokud šířka a výška stejné nejsou, vypisuje se mezera místo výplně.
======= Zadání C (2b) =======
* Zadání A+B
* Vykreslete k domečku plot podle příkladu C1 a C3 níže.
* Velikost 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 C2.
* 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.
* Výška plotu je stejná jako jeho šířka (''-|'' jsou dva znaky)
==== Pořadí kontroly vstupu ====
Kontroly vstupu a případné vypsání chyby musí být provedeno v předem zadaném pořadí (text a návratová hodnota):
^ Kontrola ^ Text chyby ^ Návratová hodnota |
^ Zadaný vstup není číslo | ''Error: Chybny vstup!'' | ''100'' |
^ Vstupní hodnota není v požadovaném intervalu | ''Error: Vstup mimo interval!'' | ''101'' |
^ Zadaná šířka domu není liché číslo | ''Error: Sirka neni liche cislo!'' | ''102'' |
^ Zadaná výška plotu je vyšší než domeček | ''Error: Neplatna velikost plotu!'' | ''103'' |
==== Příklad A1 - pub_a01 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
5
|
XXXXX
X X
X X
X X
XXXXX
| žádný | 0 |
==== Příklad A2 - pub_a02 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
a
| žádný |
Error: Chybny vstup!
| 100 |
==== Příklad A3 - pub_a03 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
1
| žádný |
Error: Vstup mimo interval!
| 101 |
==== Příklad B1 - pub_b01 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
7 5
|
X
X X
X X
XXXXXXX
X X
X X
X X
XXXXXXX
| žádný | 0 |
==== Příklad B2 - pub_b02 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
5 5
|
X
X X
XXXXX
Xo*oX
X*o*X
Xo*oX
XXXXX
| žádný | 0 |
==== Příklad B3 - pub_b03 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
8 6
| žádný |
Error: Sirka neni liche cislo!
| 102 |
==== Příklad C1 - pub_c01 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
3 8 6
|
X
XXX
X X
X X-|-|-|
X X | | |
X X | | |
X X | | |
X X | | |
XXX-|-|-|
| žádný | 0 |
==== Příklad C2 - pub_c02 ====
^ Vstupní hodnoty (stdin) ^ Výstup (stdout) ^ Chybový výstup (stderr) ^ Návratová hodnota ^
|
3 8 10
| žádný |
Error: Neplatna velikost plotu!
| 103 |
==== Příklad C3 - pub_c03 ====
^ 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 |
====== Odevzdání ======
Veřejné příklady + Makefile: {{ :courses:b0b99prpa:hw:hw05_ascii_art.zip |}}
^ Název v BRUTE | HW05 |
^ Odevzdávané soubory | main.c |
^ Volitelné soubory | *.h |
^ Argumenty při spuštění | žádné |
^ Kompilace pomocí | clang -pedantic -Wall -Werror -std=c99 -O2 |
^ Procvičované oblasti | Použití vnořených cyklů |