C 언어 Example - function6

문제

배열을 이용하여 배열 요소의 총합과 평균 그리고 요소의 출현 빈도수를 계산하는 프로그램을 작성해 보자. 이 프로그램은 다음 조건을 만족하도록하자.

1) 0에서부터 9까지의 60개의 수를 배열에 저장한다. 이 배열을 적당히 출력한다.
2) 배열요소 60개 수의 평균을 구하여 출력
3) 배열요소 60개에서 각 수가 저장된 빈도 수를 세어서 이를 다음 결과 그림과 같이 막대 그래프 형식으로 출력.
4) 가장 빈도수가 많은 수와 빈도 횟수를 출력
5) 함수는 main(), printArray(), mean(), mode()로 구성한다.


실행화면


코드

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include<stdio.h>
#include<Windows.h>
#include <time.h>
#include <stdlib.h>
 
int printArray(int ary[], int count);
double mean(int sum, int count);
void mode(int ary[], int count);
 
int main(void) {
 
    srand(time(0));
    int ary[60];
    int sum = 0;
    int i;
 
    for (i = 0; i < sizeof(ary) / sizeof(int); i++) {
        ary[i] = rand() % 10;
    }
 
    printf("다음과 같은 0에서 9까지의 정수에서 \n");
 
    sum = printArray(ary, sizeof(ary)/sizeof(int));
 
    printf("\n\n**********\n");
    printf("  평균\n");
    printf("**********\n\n");
 
    printf("배열 원소의 평균을 구하려고 한다.\n");
    printf("배열 원소의 수는 %d이고\n"sizeof(ary)/sizeof(int));
    printf("배열 원소의 전체 합은 %d 이므로\n", sum);
    printf("평균은 %.2lf 이다.", mean(sum, sizeof(ary) / sizeof(int)) );
 
    printf("\n\n**********\n");
    printf("  분포\n");
    printf("**********\n\n");
     
    printf("수  횟수  \n");
 
    mode(ary, sizeof(ary)/sizeof(int));
 
    system("pause");
    return 0;
}
 
 
int printArray(int ary[], int count) {
    int i;
    int sum = 0;
 
    for (i = 0; i < count; i++) {
        if ((i % 10== 0printf("\n");
        printf("%d ", ary[i]);
        sum += ary[i];
    }
 
    return sum;
}
 
double mean(int sum, int count) {
 
    double meanResult = (double)sum / (double)count;
 
    return meanResult;
}
 
void mode(int ary[], int count) {
 
    int i,j;
    int sum = 0;
    int max = 0;
    int maxnumber = 0;
 
    for (i = 0; i < 10; i++) {
         
        // 수
        printf("%d   ", i);
        for (j = 0; j < count; j++) {
            if (ary[j] == i) {
                sum++;
            }
        }
        // 횟수
        printf("%d   ", sum);
 
        if (sum > max) {
            max = sum;
            maxnumber = i;
        }
 
        // 크기 맞춤
        if (sum < 10printf(" ");
 
        // 별찍음
        while (sum) {
            if (sum == 0break;
            printf("*");
            sum--;
        }
        printf("\n");
    }
 
    printf("\n분포에서는 수의 빈도 횟수를 나타낸다.\n");
    printf("분석결과, 가장 많은 빈도수는 수 %d이(가) %d번 나타났다.\n", maxnumber, max);
     
}
cs

댓글