Cómo crear un histograma usando el código de programación C (En 8 Pasos)

Por deborah lee soltesz
Cómo crear un histograma usando el código de programación C (En 8 Pasos)
BananaStock/BananaStock/Getty Images

Un histograma es un gráfico de barras que muestra la frecuencia con que cada valor se produce en un conjunto de valores discretos. Los histogramas se encuentran comúnmente como una opción de tabla en el análisis de datos en el software de hoja de cálculo y software de edición de imágenes para mostrar la distribución de los tonos (de negro a blanco) en una imagen. En el lenguaje de programación C, se usa una matriz para contener el cálculo de la frecuencia que simplifica la creación de un histograma del conjunto de datos. Mientras que los conjuntos de datos utilizados para la creación de histogramas por lo general contienen valores enteros, caracteres e incluso cadenas, se pueden contar y representar gráficamente.

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 |