데이터의 분포를 출력하는 소스 코드 (C언어)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <stdlib.h>
 
#define RANGE 1000000
#define TRM 32
 
void main() {
    FILE* fp;
    fp = fopen("output.dat""rb");
    if (fp == NULL)
        return;
    int nrData;
    fread(&nrData, sizeof(int), 1, fp);
    printf("num:%d\n", nrData);
    int* arr;
    arr = (int*)malloc(sizeof(int)*nrData);
    fread(arr, sizeof(int), nrData, fp);
    int maxValue = arr[0];
    for (int i = 0; i < nrData; i++) {
        maxValue = maxValue < arr[i] ? arr[i] : maxValue;
    }
    printf("maxValue:%d\n", maxValue);
    int distrib[TRM+1= { 0, };
    int interval = maxValue / TRM;
    printf("interval:%d\n", interval);
    printf("start calculating...\n");
    int temp;
    for (int i = 0; i < nrData; i++) {
        temp = arr[i] / interval;
        distrib[temp]++;
    }
    printf("finish calculating.\n");
    for (int i = 0; i < TRM; i++) {
        printf("RANGE[%d-%d]:%d\n", i*interval, (i + 1)*interval, distrib[i]);
    }
    printf("finish displaying\n");
    for (int i = 0; i < nrData; i++) {
        printf("%d\n", arr[i]);
    }
    fclose(fp);
    free(arr);
}
cs