[ create a new paste ] login | about

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

C, pasted on Jul 12:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 128

void
probability_calc(int c[], double p[], int n)
{
  int             i, sum = 0;
  for (i = 0; i < n; i++)
    sum += c[i];
  for (i = 0; i < n; i++)
    p[i] = (double) c[i] / sum;
}

double
entropy_calc(double p[], int n)
{
  int             i;
  double          entropy = 0;
  for (i = 0; i < n; i++)
    if (p[i])
      entropy -= log(p[i]) / log(2) * p[i];
  return entropy;
}

int
main(void)
{
  int             cnt[N] = {0};
  char            str[20], c;
  double          p[N] = {};
  FILE           *fp;
  printf("ファイル名を入力してください:");
  scanf("%s", str);
  fp = fopen(str, "r");
  if (!fp) {
    printf("ファイルopenエラーです");
    return -1;
  }
  while ((c = fgetc(fp)) != EOF)
    if (c != '\n')
      cnt[(int) c]++;
  probability_calc(cnt, p, N);
  printf("エントロピーH = %f\n", entropy_calc(p, N));
  return (0);
}


Output:
1
2
3
In function `entropy_calc':
undefined reference to `log'
undefined reference to `log'


Create a new paste based on this one


Comments: