{{indexmenu_n>10}}
====== HW 08 - Zpracování číselné řady ======
^ **Termín odevzdání** | 5.12.2020 12.12.2020 23:59 CET|
^ Bodový zisk | 4b (2+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ícho vstup 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 (2b) ===
- 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 (2b + 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ělný lineárneá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í desetiných čísel, zaokrouhlení není nutné.
^ 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 tisic hodnot do 6 sekund.\\ Odevzdávací systém má nastaven timeout na 15s. |