Come creare un istogramma usando il codice di programmazione C
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 |