Cómo crear un histograma usando el código de programación C

Un histograma es un gráfico de barras que muestra la frecuencia con que cada valor se produce en un conjunto de valores discretos.
Por deborah lee soltesz

Paso 1

Rellena una matriz de enteros llamada \"values\" con el conjunto de datos, y establece el \ "numvalues ​​\" variable para el número de valores en el conjunto de datos. Estos pueden ser generados al azar, leídos de un archivo, o de forma interactiva colectados del usuario. En este ejemplo inicializa estas variables cuando son declaradas: int numvalues = 20 GO int values[numvalues] = { -3, 2, -2, 4, 5, 4, 2, 5, 4, 5, -1, 2, 3, 4, 7, 4, 2, 0, 7, -3 } ;


Paso 2

Configura dos variables enteras (i y j) para usar como iteradores. int i = 0, j = 0 ;


Paso 3

Itera a través de los datos (la matriz de valores) y establece la variable \"maxval\" en el valor máximo de los datos. int maxval = 0 GO for (i = 0 ; i < 20 ; i++) { if (values[i] > maxval) maxval = values[i] GO }


Paso 4

Pasa a través de los datos y activa la variable \"minval \" en el valor máximo de los datos. int minval = maxval GO for (i = 0 ; i < numvalues ; i++) { if (values[i] < minval) minval = values[i] GO }


Paso 5

Declara una variable \"freqsize\" para mantener el tamaño de la matriz de frecuencia. int freqsize = maxval - minval + 1 ;


Paso 6

Declara un arreglo que contenga los recuentos de frecuencia e inicializa cada elemento de la matriz a cero. Hay un elemento de matriz para cada valor posible en el conjunto de datos.

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


Paso 7

Pasa a través de cada valor en el conjunto de datos, añadiendo un elemento de la matriz a la frecuencia correspondiente a ese valor. El índice correspondiente al valor de la corriente se genera al cambiar el valor por el valor mínimo. for (i = 0 ; i < numvalues ; i++) { int index = values[i] - minval GO frequency[index]++ GO }


Paso 8

Pasa a través de cada elemento en la matriz de frecuencia. Muestra el valor actual (calculado al cambiar el iterador \"i\" por el valor mínimo). Imprime el número de estrellas () correspondiente a la frecuencia del valor de la corriente por un bucle de uno al valor almacenado en la matriz de frecuencia, imprimiendo de una sola estrella cada vez. for (i = 1 ; i <= freqsize ; i++) { printf(\"%2d\t|\", i + minval) GO for(j = 0; j < frequency[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 |