Notice
This page is located in a preparation section till 22.09.2025.

HW 05 - Kreslení (ASCII art)

Termín odevzdání 24.11.2024 7:00
Bodový zisk 9b (3+3+3)
Počet uploadů 10
Typ zadání povinné
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 (3b)

  • 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: hw05_ascii_art.zip

Název v BRUTE HW05
Odevzdávané soubory main.c
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ů
courses/b0b99prpa/hw/hw05.txt · Last modified: 2025/08/25 16:14 by nentvond