최빈값 출력
이 마지막 단계에서는 최빈값 계산 프로그램을 개선하여 여러 최빈값을 처리하고 통계 정보를 더욱 포괄적으로 출력합니다.
기존 파일을 열고 코드를 업데이트합니다.
cd ~/project
nano mode_calculation.c
이전 코드를 다음 구현으로 바꿉니다.
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int numbers[MAX_SIZE];
int frequencies[MAX_SIZE] = {0};
int unique_numbers[MAX_SIZE];
int n, i, j, unique_count = 0, max_frequency = 0;
// 요소 개수 입력
printf("Enter the number of elements (max %d): ", MAX_SIZE);
scanf("%d", &n);
// 배열 요소 입력
printf("Enter %d integers:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
// 고유 숫자와 그 빈도 찾기
for (i = 0; i < n; i++) {
int is_unique = 1;
for (j = 0; j < unique_count; j++) {
if (numbers[i] == unique_numbers[j]) {
is_unique = 0;
break;
}
}
if (is_unique) {
unique_numbers[unique_count] = numbers[i];
// 이 고유 숫자의 빈도 계산
int count = 0;
for (j = 0; j < n; j++) {
if (numbers[i] == numbers[j]) {
count++;
}
}
frequencies[unique_count] = count;
// 최대 빈도 업데이트
if (count > max_frequency) {
max_frequency = count;
}
unique_count++;
}
}
// 상세 최빈값 정보 출력
printf("\nStatistical Analysis:\n");
printf("Total Numbers: %d\n", n);
printf("Unique Numbers: %d\n", unique_count);
printf("\nFrequency Distribution:\n");
for (i = 0; i < unique_count; i++) {
printf("Number %d: %d time(s)\n",
unique_numbers[i], frequencies[i]);
}
// 최빈값 출력
printf("\nMode(s):\n");
for (i = 0; i < unique_count; i++) {
if (frequencies[i] == max_frequency) {
printf("- %d (appears %d times)\n",
unique_numbers[i], frequencies[i]);
}
}
return 0;
}
프로그램을 컴파일하고 실행합니다.
gcc mode_calculation.c -o mode_calculation
./mode_calculation
예시 출력:
Enter the number of elements (max 100): 7
Enter 7 integers:
2 3 4 2 2 5 5
Statistical Analysis:
Total Numbers: 7
Unique Numbers: 4
Frequency Distribution:
Number 2: 3 time(s)
Number 3: 1 time(s)
Number 4: 1 time(s)
Number 5: 2 time(s)
Mode(s):
- 2 (appears 3 times)
이 버전의 주요 개선 사항:
- 여러 최빈값이 있는 경우 처리
- 포괄적인 통계 개요 제공
- 데이터 집합에서 고유 숫자 식별
- 빈도 분포 표시