b0b36prp-hw01.zip

HW 01 - Načítání vstupu, výpočet a výstup

Termín odevzdání 19.10.2024 23:59 PDT
Povinné zadání 1b
Volitelné zadání není
Bonusové zadání není
Počet uploadů 10
Podpůrné soubory 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. V případě chyby načítání vstupu, program vypíše “Chyba nacitani vstupu!\n” na standardní výstup a končí s návratovou hodnotou “100”.
  • 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 stderrError: 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.
Při návrhu programu uvažujte o zjednodušení implementace vhodnou dekompozicí. Protože načítáme dvě celá čísla, která navíc mají být v definovaném rozsahu, nabízí se napsat funkci, která bude čísla načítat a vracet např. true, pokud se čísla v rozsahu podaří načíst. Podobně výstup můžeme řešit samostatnou funkcí, čímž dosáhneme relativně krátké funkce main, která příspívá k čitelnosti kódu. Například _Bool read_numbers(int *a, int *b);.
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 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 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; “Chyba nacitani vstupu!”stderr
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 - Testování HW programů před odevzdáním.
courses/b0b36prp/hw/hw01.txt · Last modified: 2024/09/26 15:00 by faiglj