{{indexmenu_n>10}} ====== HW 08 - Zpracování číselné řady ====== ^ **Termín odevzdání** | 17.12.2023 7:00| ^ Bodový zisk | 5b (3+2) | ^ Min. bodový zisk | 2b | ^ **Počet uploadů** | 15 | ^ Typ zadání | povinné | ===== Zadání ===== Cílem tohoto úkolu je zpracovat teoreticky neomezeně dlouhou řadu celých čísel ze standardního vstupu a vypsat jejich základní statistiky včetně histogramu. Podle náročnosti si zvolte variantu úkolu A nebo B, kterou chcete řešit. Pro splnění úlohy je třeba odevzdat jednu z variant zadání s tím, že **musíte získat** minimální počet bodů z této úlohy uvedený v tabulce nahoře. Tj. pokud získáte např. 1.5b ze 2b, bude třeba vypracovat vyšší variantu zadání, aby byl úkol uznán za správný. Na rozdíl od HW05 neplatí, že nesprávně vypracovaná varianta B automaticky splňuje variantu A. Před uploadem řešení je třeba vyplnit předpokládaný čas doby řešení (required time). ==== Vstup ==== - Na prvním místě datové řady je počet sloupců histogramu $n$ - Následují celá čísla $x_j$ zpracovávané řady - Pokud je na vstupu v řadě čísel něco jiného než číslo, načítání se ukončí a program vypočítá statistické ukazatele z již načtených dat. 8 25 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 26 11 11 ==== Výstup ==== === Varianta A (3b) === - Medián všech zadaných čísel vypsaný na dvě desetinná místa - Počet zadaných čísel $m$ - Zadané minimální číslo $min(x)$ - Zadané maximální číslo $max(x)$ Ve variantě A nemá počet prvků (binů) histogramu význam. === Varianta B (3b + 2b) === - Varianta A - Histogram zadaných hodnot * Počet sloupců histogramů udává první zadané číslo na standardní vstup * Je-li první číslo zadané chybně, program končí s návratovým kódem ''100'' a chybovou hláškou na standardní chybový výstup "''Error: Chyba histogramu!\n''" * Na začátku každé položky histogramu je uveden interval hodnot pro daný bin (interval) rozdělený lineárně od minima do maxima (hodnoty jsou uvedeny na jedno desetinné místo, pro celou část jsou vyhrazeny 3 znaky) * $SIZE = \frac{max(x) - min(x)}{n}$ * Krajní hodnoty jednotlivých binů jsou dány $k_i = min(x) + i \cdot SIZE$, kde $i = 0 \dots n$ * Číslo binu je poté dáno pro vstupní hodnotu $x_j$ jako $BIN(x_j) = floor \left(\frac{x_j - min(x)}{SIZE} \right)$, kde $j = 0 \dots (m-1)$ * Histogram je lineárně přeškálován tak, aby nejdelší řádek histogramu byl vždy 25 znaků "=" dlouhý. Při přeškálování stačí provést oříznutí desetinných čísel, zaokrouhlení není nutné. Funkce z knihovny ''math.h'' nelze použít! ^ Varianta A | Median 11.00 Pocet cisel: 23 Min. hodnota: 1 Max. hodnota: 26 | ^ Varianta B | Median 11.00 Pocet cisel: 23 Min. hodnota: 1 Max. hodnota: 26 Histogram: 1.0 - 4.1 |================ 4.1 - 7.2 |============ 7.2 - 10.4 |============ 10.4 - 13.5 |========================= 13.5 - 16.6 |============ 16.6 - 19.8 |======== 19.8 - 22.9 | 22.9 - 26.0 |======== | ===== Odevzdání ===== Veřejné příklady + Makefile: {{ :courses:b0b99prpa:hw:hw08_-_statistika.zip |}} ^ ^ **Povinné zadání** ^ ^ **Název v BRUTE** | HW08 | ^ **Odevzdávané soubory** | main.c | ^ **Kompilace pomocí** | clang -pedantic -Wall -Werror -std=c99 | ^ **Předpokládaná složitost** | program by měl být schopen zvládnout zpracovat 100 tisíc hodnot do 6 sekund.\\ Odevzdávací systém má nastaven timeout na 15s. |