progtest/exercise-03-rgb
2025-10-10 14:39:35 +02:00
..
2025-10-07 14:03:24 +02:00
2025-10-10 14:39:35 +02:00
2025-10-07 14:03:24 +02:00

Úkolem je vytvořit program, který převede barvu z RGB zápisu do hexadecimálního formátu.

Na vstupu dostanete definici barvy v podobě rgb ( x, y, z ). x, y a z jsou celá čísla v intervalu od 0 do 255 včetně a reprezentují barevnou složku. Cílem je převést tento formát na formát začínající znakem # a následně bez mezer pro každou barevnou složku hexadecimální zápis na dvě pozice například pro hodnotu 12 vypíšete dvě hodnoty 0C. Formát vstupu a výstupu je vidět níže na ukázce práce programu.

Pokud je vstup neplatný, program to musí detekovat a zobrazit chybové hlášení. Chybové hlášení zobrazujte na standardní výstup (ne na chybový výstup). Za chybu považujte:

  • vstup neobsahuje řetězec rgb,
  • chybějící čárka nebo závorka,
  • chybějící barevná složka,
  • barevná složka není validní číslo,
  • barevná složka není v rozmezí 0 až 255.

Ukázky běhu programu:

Zadejte barvu v RGB formatu:
rgb ( 255, 0, 0 )
#FF0000

Zadejte barvu v RGB formatu:
    rgb			(  0  ,   255  ,   0   )
#00FF00

Zadejte barvu v RGB formatu:
rgb(0,0,255)
#0000FF

Zadejte barvu v RGB formatu:
rgb ( 127, 127, 0 )
#7F7F00

Zadejte barvu v RGB formatu:
hsl ( 0, 127, 0 )
Nespravny vstup.

Zadejte barvu v RGB formatu:
rgb ( 255, 0 )
Nespravny vstup.

Zadejte barvu v RGB formatu:
rgb ( 1000, 127, 0 )
Nespravny vstup.

Zadejte barvu v RGB formatu:
RGB ( 100, 200, 0 )
Nespravny vstup.

Poznámky:

  • Ukázkové běhy zachycují očekávané výpisy Vašeho programu (tučné písmo) a vstupy zadané uživatelem (základní písmo). Zvýraznění tučným písmem je použité pouze zde na stránce zadání, aby byl výpis lépe čitelný. Váš program má za úkol zobrazit text bez zvýrazňování (bez HTML markupu).
  • Znak odřádkování je i za poslední řádkou výstupu (i za případným chybovým hlášením).
  • Pro načítání vstupu se hodí funkce scanf. Pomocí funkce scanf lze i snadno kontrolovat přítomnost čárek, závorek a řetězce rgb.
  • Nepokoušejte se načíst řetězec rgb do paměti a pak jej kontrolovat. Práce s řetězci je v C komplikovaná a náchylná k chybám. V této úloze to navíc není potřeba, kontrolu zvládne funkce scanf.
  • Na výstupu zobrazte hexadecimální číslo s velkými písmeny. Použijte odpovídající formát pro funkci printf.
  • Při programování si dejte pozor na přesnou podobu výpisů. Výstup Vašeho programu kontroluje stroj, který požaduje přesnou shodu výstupů Vašeho programu s výstupy referenčními. Za chybu je považováno, pokud se výpis liší. I chybějící nebo přebývající mezera/odřádkování je považováno za chybu. Abyste tyto problémy rychle vyloučili, použijte přiložený archiv se sadou vstupních a očekávaných výstupních dat. Podívejte se na videotutoriál (Courses -> Video tutoriály), jak testovací data použít a jak testování zautomatizovat.