Come creare un istogramma usando il codice di programmazione C

Un istogramma è un grafico a barre che mostra quanto spesso ogni valore si verifica in un insieme di valori discreti.

Passaggio 1

Riempi un array di numeri interi chiamati \ "valori \" con il set di dati e imposta la variabile \ "numvalues ​​\" per il numero di valori nel set di dati. Questi possono essere generati in modo casuale, letti da un file o raccolti in modo interattivo dall'utente. In questo esempio, si inizializzano queste variabili quando vengono dichiarate: int numvalues ​​= 20 GO int valori [numvalues] = {-3, 2, -2, 4, 5, 4, 2, 5, 4, 5, -1, 2, 3, 4, 7, 4, 2, 0, 7, -3};

Passaggio 2

Impostare due variabili intere (i e j) da utilizzare come iteratori. int i = 0, j = 0;

Passaggio 3

Esso scorre attraverso i dati (la matrice dei valori) e imposta la variabile \ "maxval \" sul valore massimo dei dati. int maxval = 0 GO per (i = 0; i maxval) maxval = valori [i] GO}

Passaggio 4

Passare attraverso i dati e attivare la variabile "minval" nel valore massimo dei dati. int minval = maxval GO per (i = 0; i <numvalues; i ++) {if (valori [i] <minval) minval = valori [i] GO}

Passaggio 5

Dichiarare una variabile \ "freqsize \" per mantenere la dimensione della matrice di frequenza. int freqsize = maxval - minval + 1;

Passaggio 6

Dichiarare un array che contiene i conteggi di frequenza e inizializzare a zero ogni elemento dell'array. C'è un elemento di matrice per ogni possibile valore nel set di dati.

int frequency [freqsize] GO per (i = 0; i <freqsize; i ++) {frequenza [i] = 0 GO}

Passaggio 7

Passa attraverso ogni valore nel set di dati, aggiungendo un elemento della matrice alla frequenza corrispondente a quel valore. L'indice corrispondente al valore della corrente viene generato modificando il valore per il valore minimo. for (i = 0; i <numvalues; i ++) {int index = values ​​[i] - minval GO frequency [indice] ++ GO}

Passaggio 8

Passare attraverso ogni elemento nella matrice di frequenze. Visualizza il valore corrente (calcolato modificando l'iteratore \ "i \" sul valore minimo). Stampa il numero di stelle ( ) corrispondente alla frequenza del valore della corrente di un loop di uno al valore memorizzato nella matrice di frequenza, stampando ogni volta da una singola stella. for (i = 1; i <= freqsize; i ++) {printf (\ "% 2d \ t | \", i + minval) VAI per (j = 0; j <frequenza [i]; j ++) {printf (\ " \") 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 |