Warning
This page is located in archive.

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

  1. Na prvním místě datové řady je počet sloupců histogramu $n$
  2. Následují celá čísla $x_j$ zpracovávané řady
  3. 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)

  1. Medián všech zadaných čísel vypsaný na dvě desetinná místa
  2. Počet zadaných čísel $m$
  3. Zadané minimální číslo $min(x)$
  4. Zadané maximální číslo $max(x)$
Ve variantě A nemá počet prvků (binů) histogramu význam.

Varianta B (3b + 2b)

  1. Varianta A
  2. 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: 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.
courses/b0b99prpa/hw/hw08.txt · Last modified: 2023/12/06 11:07 by navrava2