{{ :courses:b0b36prp:hw:b0b36prp-hw01.zip |}}{{indexmenu_n>2}} ======== HW 01 - Načítání vstupu, výpočet a výstup ======== ^ Termín odevzdání | 21.10.2023 23:59 PDT | ^ Povinné zadání | 1b | ^ Volitelné zadání | není | ^ Bonusové zadání | není | ^ Počet uploadů | 10 | ^ Podpůrné soubory | {{:courses:b0b36prp:hw:b0b36prp-hw01.zip|}} | Tato úloha slouží k procvičení formátovaného vstupu a výstupu s použitím funkcí ''scanf''(""), ''printf''("") a chybového výstupu ''fprintf''(''stderr'', ""). **Podobně jako ostatní domácí úkoly, vždy je dostačující znalost témat z předchozích přednášek a cvičení, tj. není nutné (a mnohdy ani vhodné) pro povinné a volitelné zádání používat pokročilé programové konstrukty.** ====== Povinné zadání ====== * Ze standardního vstupu načtěte dvě celá čísla v rozsahu [-10 000; 10 000] včetně krajních hodnot. * Pokud bude některá vstupní hodnota mimo interval, tak vypiště "''Error: Vstup je mimo interval!''" na standardní chybový výstup (''stderr'') a ukončete program s návratovou hodnotou "''100''". * Vypište čísla v dekadickém a hexadecimálním tvaru na standardní výstup. * Dále vypište celočíselný součet, rozdíl a součin obou čísel. * Vypište celočíselný podíl obou čísel. Pokud by mělo nastat dělení nulou, vypište výsledek ''NaN'' a na ''stderr'' "''Error: Nedefinovany vysledek!''" a program ukončete s návratovou hodnotou "''101''". * Vypočtěte průměrnou hodnotu obou čísel a vypište ji na standardní výstup s přesností na jedno desetinné místo. * Dodržte očekávané formátování, zvláště pak mezery a tzv. bílé znaky. Na konci výstupu je vždy konec řádku. Pro testování funkčnosti program před jeho odevzdáním lze využít přiložené vstupní a referenční výstupní soubory. Dále je možné testovat také generátorem a referečním řešení viz [[courses:b0b36prp:tutorials:testing|Testování HW programů před odevzdáním]]. ==== Příklad 1 - pub01 ==== ^ Standardní vstup (''stdin'') ^ Očekávaný výstup (''stdout'') ^ Očekávaný výstup (''stderr'') ^ Návratová hodnota ^ | 11 24 | Desitkova soustava: 11 24 Sestnactkova soustava: b 18 Soucet: 11 + 24 = 35 Rozdil: 11 - 24 = -13 Soucin: 11 * 24 = 264 Podil: 11 / 24 = 0 Prumer: 17.5 | | 0 | ==== Příklad 2 - pub02 ==== ^ Standardní vstup (''stdin'') ^ Očekávaný výstup (''stdout'') ^ Očekávaný výstup (''stderr'') ^ Návratová hodnota ^ | 152 0 | Desitkova soustava: 152 0 Sestnactkova soustava: 98 0 Soucet: 152 + 0 = 152 Rozdil: 152 - 0 = 152 Soucin: 152 * 0 = 0 Podil: 152 / 0 = NaN Prumer: 76.0 | Error: Nedefinovany vysledek! | 101 | ==== Příklad 3 - pub03 ==== ^ Standardní vstup (''stdin'') ^ Očekávaný výstup (''stdout'') ^ Očekávaný výstup (''stderr'') ^ Návratová hodnota ^ | 10001 125 | | Error: Vstup je mimo interval! | 100 | ==== Příklad 4 - pub04 ==== ^ Standardní vstup (''stdin'') ^ Očekávaný výstup (''stdout'') ^ Očekávaný výstup (''stderr'') ^ Návratová hodnota ^ | 212 -78 5 16 32 | Desitkova soustava: 212 -78 Sestnactkova soustava: d4 ffffffb2 Soucet: 212 + -78 = 134 Rozdil: 212 - -78 = 290 Soucin: 212 * -78 = -16536 Podil: 212 / -78 = -2 Prumer: 67.0 | | 0 | ====== Odevzdání ====== Abchom vás motivovali, připravili jsme pro vás balíček {{:courses:b0b36prp:hw:b0b36prp-hw01.zip|}}, který obsahuje všechny veřejné testovací vstupy a jejich očekávané výstupy. Dále archiv obsahuje jednoduchý ''Makefile'', díky kterému můžete kompilovat program jednoduše pomocí příkazu ''make'' a vytvořit archiv pro odevzdávací systém pomocí příkazu ''make zip'' (vytvoří se archiv ''hw01-b0b36prp-brute.zip''). Na konci každého řádku je symbol nového řádku ('' '\n' ''). Pro kontrolu můžete uložit standardní výstup programu do souboru a zobrazit jej v hexadecimálním tvaru pomocí příkazu ''hexdump -C'' ^ ^ Povinné zadání ^ ^ Název v BRUTE | HW01 | ^ Odevzdávané soubory | main.c | ^ Argumenty při spuštění | žádné | ^ Návratová hodnota | ''0'' \\ ''100''; "Error: Vstup je mimo interval!" -> ''stderr'' \\ ''101''; "Error: Nedefinovany vysledek!" -> ''stderr'' \\ | ^ Kompilace | clang -pedantic -Wall -std=c99 -O2 | ^ Procvičované oblasti | standardní vstup a výstup | Domácí úkoly nezkoušejte odevzdávat, prostě je odevzdejte. Otestujte si program sami a to na přiložených příkladech nebo nově vytvořených vstupech a porovnáním s refernečním řešením, více viz - [[courses:b0b36prp:tutorials:testing|Testování HW programů před odevzdáním]].