Histogramas são comumente encontrados como opção de gráfico na análise de dados em softwares de planilha e em softwares de edição de imagem para mostrar a distribuição de tons do preto ao branco em uma imagem. Na linguagem de programação C, usar um array para armazenar a contagem de frequência simplifica a criação de um histograma do seu conjunto de dados. Embora conjuntos de dados para histogramas geralmente contenham valores inteiros, caracteres e até strings podem ser contados e graficados.
Preencha um array de inteiros chamado "valores" com seu conjunto de dados e defina a variável "numvalores" como o número de valores no seu conjunto. Eles podem ser gerados aleatoriamente, lidos de um arquivo ou coletados interativamente do usuário. Este exemplo inicializa essas variáveis na declaração:
int numvalores = 20; int valores[numvalores] = { -3, 2, -2, 4, 5, 4, 2, 5, 4, 5, -1, 2, 3, 4, 7, 4, 2, 0, 7, -3 };
Configure duas variáveis inteiras (i e j) para usar como iteradores:
int i = 0, j = 0;
Itere pelos seus dados — o array valores — e defina a variável "maxval" como o valor máximo dos seus dados:
int maxval = 0; for (i=0; i<numvalores; i++) { if (valores[i] > maxval) maxval = valores[i] }
Percorra seus dados e defina a variável "minval" como o valor mínimo dos seus dados:
int minval = maxval; for (i=0; i<numvalores; i++) { if (valores[i] < minval) minval = valores[i] }
Declare uma variável "freqsize" para armazenar o tamanho do seu array de frequência:
int freqsize = maxval - minval + 1 ;
Declare um array para armazenar as contagens de frequência e inicialize cada elemento com zero:
int frequencia[freqsize]; for (i=0; i<freqsize; i++) { frequencia[i] = 0; }
Há um elemento do array para cada valor possível no seu conjunto de dados.
Percorra cada valor no seu conjunto de dados, adicionando 1 ao elemento do array de frequência correspondente a esse valor:
for (i = 0 ; i < numvalores ; i++) { int indice = valores[i] - minval; frequencia[indice]++ }
O índice correspondente ao valor atual é gerado deslocando o valor pelo valor mínimo.
Percorra cada elemento no array de frequência. Imprima o valor atual (calculado deslocando o iterador "i" pelo valor mínimo). Imprima o número de asteriscos (*) correspondente à frequência do valor atual, loopando de 1 até o valor armazenado no array de frequência, imprimindo um asterisco a cada iteração:
for (i=1; i<=freqsize; i++) { printf("%2d\t|", i + minval); for(j=0; j<frequencia[i]; j++) { printf("*") } printf("\n") }
Tecnologia Eletrônica © [www.351231.com]