문제
배열을 이용하여 배열 요소의 총합과 평균 그리고 요소의 출현 빈도수를 계산하는 프로그램을 작성해 보자. 이 프로그램은 다음 조건을 만족하도록하자.
1) 0에서부터 9까지의 60개의 수를 배열에 저장한다. 이 배열을 적당히 출력한다.
2) 배열요소 60개 수의 평균을 구하여 출력
3) 배열요소 60개에서 각 수가 저장된 빈도 수를 세어서 이를 다음 결과 그림과 같이 막대 그래프 형식으로 출력.
4) 가장 빈도수가 많은 수와 빈도 횟수를 출력
5) 함수는 main(), printArray(), mean(), mode()로 구성한다.
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) == 0) printf("\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 < 10) printf(" ");
// 별찍음
while (sum) {
if (sum == 0) break;
printf("*");
sum--;
}
printf("\n");
}
printf("\n분포에서는 수의 빈도 횟수를 나타낸다.\n");
printf("분석결과, 가장 많은 빈도수는 수 %d이(가) %d번 나타났다.\n", maxnumber, max);
}
| cs |
댓글
댓글 쓰기