Jak vytvořit histogram pomocí programovacího kódu C
Krok 1
Do datové sady vyplňte pole celých čísel s názvem \ "values \" a nastavte proměnnou \ "numvalues \" pro počet hodnot v datové sadě. Ty mohou být generovány náhodně, přečteny ze souboru nebo interaktivně shromážděny od uživatele. V tomto příkladu inicializujete tyto proměnné, když jsou deklarovány: int numvalues = 20 GO int hodnoty [numvalues] = {-3, 2, -2, 4, 5, 4, 2, 5, 4, 5, -1, 2, 3, 4, 7, 4, 2, 0, 7, -3};
Krok 2
Nastavte dvě celočíselné proměnné (i a j), které chcete použít jako iterátory. int i = 0, j = 0;
Krok 3
Probíhá opakováním dat (matice hodnot) a nastavuje proměnnou \ "maxval \" na maximální hodnotu dat. int maxval = 0 GO pro (i = 0; i maxval) maxval = hodnoty [i] GO}
Krok 4
Projděte data a aktivujte proměnnou "minval" v maximální hodnotě dat. int minval = maxval GO pro (i = 0; i <numvalues; i ++) {pokud (hodnoty [i] <minval) minval =
Krok 5
Deklarujte proměnnou \ "freqsize \" pro udržení velikosti frekvenční matice. int freqsize = maxval - minval + 1;
Krok 6
Deklarujte pole, které obsahuje počty frekvencí a inicializujte každý prvek pole na nulu. K dispozici je maticový prvek pro každou možnou hodnotu v datové sadě.
int frekvence [freqsize] GO pro (i = 0; i <freqsize; i ++) {frekvence [i] = 0 GO}
Krok 7
Projděte každou hodnotu v datové sadě a přidejte prvek matice na frekvenci odpovídající této hodnotě. Index odpovídající hodnotě proudu se generuje změnou hodnoty o minimální hodnotu. pro i = 0; i <numvalues; i ++) {int index = hodnoty [i] - minval GO frekvence [index] ++ GO}
Krok 8
Projděte každý prvek ve frekvenční matici. Zobrazuje aktuální hodnotu (vypočtená změnou iterátoru \ "i \" na minimální hodnotu). Vytiskne počet hvězd ( ) odpovídající frekvenci hodnoty proudu smyčkou jedna na hodnotu uloženou ve frekvenční matici a po každém tisku z jedné hvězdy. pro (i = 1; i <= freqsize; i ++) {printf (\ "% 2d \ t | \, i + minval) " \"} GO} printf (\ "\ n \") GO}
The example data set provided earlier will print the following histogram:
-3 | -2 | -1 | 0 | * 1 | 2 | * 3 | 4 | 5 | 6 | 7 |