Lab02 - Výpočet statistiky číselné posloupnosti

Template domácího úkolu ke stažení zde. Ke kontrole vstupů použijte funkce z třídy TextIO.

Odevzdávejte původní, implementované třídy v balíčku cz.cvut.fel.pjv.impl; jiné nahrané soubory nebudou kontrolovány, a proto je neupravujte!

Napište program, který vypočte průměrnou hodnotu a směrodatnou odchylku z posloupnosti čísel zadaných na standardní vstup. Při implementaci použijte předpřipravený interface StatsInterface, a jeho implementaci Stats; tu následně budete používat ve třídě Lab02. Držte se poskytnuté dokumentace a následujících požadavků:

  • Výpočet statistiky (průměr a odchylka) se provádí z každých 10 vstupních čísel. Tyto dvě hodnoty vypište na jeden řádek standardního výstupu na tři desetinná místa a čísla oddělte mezerou, tj. formátování “%.3f %.3f”.
  • Na začátek řádku vypište počet hodnot, ze kterých jsou průměr a odchylka vypočteny na dvě místa, tj. formátování “%2d”.
  • Při detekci konce vstupního souboru vypište dílčí výsledek z příslušného počtu hodnot, ale pouze pokud je počet hodnot použitých k výpočtu vyšší než 1.
  • Detekci řádku, který není validním vstupem (číslem) indikujte výpisem A number has not been parsed from line X, kde X je číslo řádku, na standardní chybový výstup.
  • Detekci konce vstupu indikujte výpisem End of input detected! na standardní chybový výstup.
  • Důkladně rozlišujte mezi výstupem na standardní výstup a na standardní chybový výstup!
Pro výpočet směrodatné odchylky lze použít průměrnou hodnotu a průměr z mocniny sledované veličiny viz http://en.wikipedia.org/wiki/Standard_deviation.

Ukázka výstupu standardního a chybového výstupu pro soubory z veřejných datasetů (které se nachází v templatu ve složce test/resources). Dbejte prosím na formátování výstupu: každý (i ten poslední) řádek by měl být zarovnaný správně, a ukončen znakem nového řádku:

Vstup Standardní výstup Standardní chybový výstup
23
3
1
3
4
5 6.800 8.158
End of input detected!
8
1
3
not a number
6
7
8
6 5.500 2.630
A number has not been parsed from line 4
End of input detected!
2
185
145
2
65
-7
14
84
15
not a number
152
10 65.700 68.519 A number has not been parsed from line 10
End of input detected!

V termínálu můžete přesměrovat soubor do standardního vstupu pomocí znaku <, tedy např. java -cp target/hw2-1.0-SNAPSHOT.jar cz.cvut.fel.pjv.Main < src/test/resources/cz/cvut/fel/pjv/_public_1.txt.

Alternativní způsoby přesměrování obsahu souboru na standardní vstup:

IntelliJ Idea

Netbeans

Pro účely testování přidejte do metody main kód:

public static void main(String[] args) throws FileNotFoundException {
  FileInputStream is = new FileInputStream(new File("C:\\TEMP\\long_input.txt"));
  System.setIn(is);
  //...

Před odevzdáním řešení do BRUTE tento kód pochopitelně odstraňte!

Spuštění jar souboru bez manifestu z příkazové řádky:
java -cp ./soubor.jar cz.cvut.fel.pjv.Main
courses/b0b36pjv/hw/02.txt · Last modified: 2025/02/14 11:24 by zidekja2