>> Tecnologia Eletrônica >  >> Casa Inteligente >> Vida Inteligente

Como Criar um Histograma Usando Código em Linguagem C

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.

Passo 1

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 };

Passo 2

Configure duas variáveis inteiras (i e j) para usar como iteradores:

int i = 0, j = 0;

Passo 3

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] }

Passo 4

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] }

Passo 5

Declare uma variável "freqsize" para armazenar o tamanho do seu array de frequência:

int freqsize = maxval - minval + 1 ;

Passo 6

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.

Passo 7

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.

Passo 8

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") }