Como criar um histograma usando o código de programação C

Um histograma é um gráfico de barras que mostra com que frequência cada valor ocorre em um conjunto de valores discretos.

Passo 1

Preencha uma matriz de números inteiros chamados \ "values ​​\" com o conjunto de dados e defina a variável \ "numvalues ​​\" para o número de valores no conjunto de dados. Eles podem ser gerados aleatoriamente, lidos em um arquivo ou coletados interativamente do usuário. Neste exemplo, você inicializa essas variáveis ​​quando elas são declaradas: int numvalues ​​= 20 GO int valores [numvalues] = {-3, 2, -2, 4, 5, 4, 2, 5, 4, 5, -1, 2, 3 4, 7, 4, 2, 0, 7, -3};

Passo 2

Configure duas variáveis ​​inteiras (i e j) para usar como iteradores. int i = 0, j = 0;

Passo 3

Ele itera através dos dados (a matriz de valor) e define a variável \ "maxval \" como o valor máximo dos dados. int maxval = 0 GO para (i = 0; i maxval) maxval = valores [i] GO}

Passo 4

Percorra os dados e ative a variável "minval" no valor máximo dos dados. int minval = maxval IR para (i = 0; i <numvalores; i ++) {if (valores [i] <minval) minval = valores [i] GO}

Passo 5

Declare uma variável \ "freqsize \" para manter o tamanho da matriz de frequência. int freqsize = maxval - minval + 1;

Passo 6

Declare uma matriz que contém as contagens de frequência e inicialize cada elemento da matriz para zero. Existe um elemento de matriz para cada valor possível no conjunto de dados.

int frequência [freqsize] GO para (i = 0; i <freqsize; i ++) {frequência [i] = 0 GO}

Passo 7

Passe por cada valor no conjunto de dados, adicionando um elemento da matriz à frequência correspondente a esse valor. O índice correspondente ao valor da corrente é gerado alterando o valor pelo valor mínimo. para (i = 0; i <numvalores; i ++) {int índice = valores [i] - minval GO frequência [índice] ++ GO}

Passo 8

Passe por cada elemento na matriz de frequência. Exibe o valor atual (calculado alterando o iterador \ "i \" para o valor mínimo). Imprime o número de estrelas ( ) correspondente à freqüência do valor da corrente por um loop de um para o valor armazenado na matriz de freqüência, imprimindo a partir de uma única estrela a cada vez. para (i = 1; i <= freqsize; i ++) {printf (\ "% 2d \ t | \", i + minval) GO para (j = 0; j <frequência [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 |