Como criar um histograma usando o código de programação C
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 |