Určení základních statistik
Jestliže nevidíte správně česká písmena, zvolte potřebné kódování češtiny manuálně.
25.4.2005: Vzorové řešení uvedeno do
souladu se zadáním (jen 2 průchody souborem).
Zadání:
Je dán soubor dat dvojicemi kladných čísel
typu double
oddělených mezerou nebo jiným bílým znakem:
x-value y-value
(Data si tedy můžeme představit jako dva sloupce čísel.)
Napište program, který pro data z druhého sloupce souboru určí
minimum, maximum a průměrnou hodnotu. Program dále určí ty hodnoty x-value
z prvního sloupce, jimž odpovídající hodnota y-value
se od průměru
neliší více než o zadanou relativní odchylku r, tedy je v uzavřeném
intervalu
[(1-r).p,(1+r).p]
kde p je (nezáporná) průměrná hodnota. Relativní odchylka
je nezáporné reálné číslo.
Požadavky:
- Program nazvěte
minmax.c
a uložte do adresáře /export/e1/pb071/
váš_login/cvic10
- Program je volán s jedním nebo dvěma parametry. První parametr je jméno souboru s
daty a je povinný. Druhý parametr je volitelný a udává povolenou relativní odchylku r.
Pokud není relativní odchylka zadána, předpokládejte r=0.
- Kontrolujte, zda se soubor podařilo otevřít a je-li zadána, smysluplnost relativní
odchylky. Předpokládejte, že soubor obsahuje korektní data.
- Soubor, který program otevře, musí program před ukončením práce zavřít. To
platí i v případě, že program skončí indikací chyby (pokud v té době byl již
soubor otevřen).
- V případě, že soubor je prázdný, položte minimum, maximum i průměrnou hodnotu
rovnu 0.
- V případě, že v zadaném intervalu není žádná hodnota, explicitně o
tom uživatele informujte.
- S ohledem na možnou délku vstupního souboru neukládejte všechna přečtená
data jako celek do vnitřní paměti (do pole nebo jinak). Stačí uložit
jednu načtenou dvojici. Pro splnění tohoto požadavku budete muset soubor
číst opakovaně, počet čtení však omezte na 2 průchody.
Poznámky:
- Kvůli opakovanému čtení si vytvořte soubor s testovacími daty (jinak
byste je museli zadávat dvakrát). Při prvním průchodu můžete současně
spočítat průměr a najít mezní hodnoty, při druhém vytisknout hodnoty
blízké průměru.
- Před odevzdáním řešení program důkladně otestujte na počítači
aisa
.
- Pro porovnání a inspiraci si můžete spustit (na počítači aisa) vzorové
řešení ze souboru /home/jkucera/pb071/cvic10/minmax; jeho zdrojový tvar má i
s komentáři 96 řádků (2459 znaků), studentům však není k dispozici.
- Tuto úlohu připravil J. Holeček.
Jelikož v současné době předmět necvičí, dotazy a připomínky posílejte J. Kučerovi.