Os histogramas são comumente encontrados como uma opção de gráfico na análise de dados em software de planilha e em software de edição de imagem para mostrar a distribuição de tons de preto a branco em uma imagem. Na linguagem de programação C, usar uma matriz para manter a contagem de frequência simplifica a criação de um histograma de seu conjunto de dados. Embora os conjuntos de dados usados para criar histogramas geralmente contenham valores inteiros, caracteres e até strings podem ser contados e representados graficamente.
Etapa 1
Preencha uma matriz inteira chamada "values" com seu conjunto de dados e defina a variável "numvalues" para o número de valores em seu conjunto de dados. Eles podem ser gerados aleatoriamente, lidos de um arquivo ou coletados interativamente do usuário. Este exemplo inicializa essas variáveis quando são declaradas:
int numvalor =20; int valores[numvalores] ={ -3, 2, -2, 4, 5, 4, 2, 5, 4, 5, -1, 2, 3, 4, 7, 4, 2, 0, 7, -3 };
Etapa 2
Configure duas variáveis inteiras (i e j) para usar como iteradores:
int i =0, j =0;
Etapa 3
Itere através de seus dados -- a matriz de valores -- e defina a variável "maxval" para o valor máximo de seus dados:
int maxval =0; for (i=0; i
maxval) maxval =valores[i] }
Etapa 4
Percorra seus dados e defina a variável "minval" para o valor máximo de seus dados:
int minval =maxval; for (i=0; i Etapa 5
Declare uma variável "freqsize" para conter o tamanho do seu array de frequência:
int freqsize =maxval - minval + 1;
Etapa 6
Declare um array para manter as contagens de frequência e inicialize cada elemento do array para zero:
int frequência[freqsize]; for (i=0; i
Há um elemento de matriz para cada valor possível em seu conjunto de dados.
Etapa 7
Percorra cada valor em seu conjunto de dados, adicionando um ao elemento da matriz de frequência correspondente a esse valor:
for (i =0; i
O índice correspondente ao valor atual é gerado deslocando o valor pelo valor mínimo.
Etapa 8
Percorra cada elemento na matriz de frequência. Imprima o valor atual (calculado deslocando o iterador "i" pelo valor mínimo). Imprima o número de estrelas (*) correspondente à frequência do valor atual fazendo um loop de um para o valor armazenado na matriz de frequência, imprimindo uma única estrela a cada vez:
for (i=1; i<=tamanho freq; i++) { printf("%2d\t|", i + minval); for(j=0; j