[ create a new paste ] login | about

Link: http://codepad.org/8lMNCDEZ    [ raw code | output | fork ]

C, pasted on Aug 10:
#include <stdio.h>
#include <math.h>

int countPosition(double datum, double rangeMin, double delta,
		  int sizeHist)
{
  int pos;
  pos = (((int) (fabs(datum) / delta * 2)) + 1) / 2;
  return pos = sizeHist / 2 + ((datum > 0) ? 1 : -1) * pos;
}

void showHistgram(int *dataHist, double rangeMin, double delta,
		  int sizeHist)
{
  double tempMin = rangeMin;
  double tempMax = rangeMin + delta;
  int i, j;

/*  for (i = 0; i <= sizeHist; i++) { */
  for (i = 0; i < sizeHist; i++) {
    printf("%+0.2f ~ %+0.2f :",  tempMin, tempMax);

    for (j = 0; j < dataHist[i]; j++)
      printf("*");
    puts("");

    tempMax += delta;
    tempMin += delta;
  }
}

void histgram(double *data, double rangeMax, double rangeMin, double delta,
	      int sizeData)
{
  /* int sizeHist = (int) (rangeMax - rangeMin) / delta + 1; */
  int sizeHist = (int) ((rangeMax - rangeMin) / delta);
  int dataHist[100] = { 0 };
  int i;

  for (i = 0; i < sizeData; i++)
    dataHist[countPosition(data[i], rangeMin, delta, sizeHist)]++;
  showHistgram(dataHist, rangeMin, delta, sizeHist);
}

int main(int argc, char *argv[])
{
  double data[] = { 0.05, -0.05, 1.0, -1.0, 0.0 };

  double rangeMax = 1.05;
  double rangeMin = -1.05;
  double delta = 0.1;
  int sizeData = sizeof(data) / sizeof(data[0]);

  histgram(data, rangeMax, rangeMin, delta, sizeData);

  return 0;
}


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-1.05 ~ -0.95 :*
-0.95 ~ -0.85 :
-0.85 ~ -0.75 :
-0.75 ~ -0.65 :
-0.65 ~ -0.55 :
-0.55 ~ -0.45 :
-0.45 ~ -0.35 :
-0.35 ~ -0.25 :
-0.25 ~ -0.15 :
-0.15 ~ -0.05 :*
-0.05 ~ +0.05 :*
+0.05 ~ +0.15 :*
+0.15 ~ +0.25 :
+0.25 ~ +0.35 :
+0.35 ~ +0.45 :
+0.45 ~ +0.55 :
+0.55 ~ +0.65 :
+0.65 ~ +0.75 :
+0.75 ~ +0.85 :
+0.85 ~ +0.95 :


Create a new paste based on this one


Comments: