{{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ů |