728x90
반응형
Q12. 실습 2-13 프로그램의 시력 분포를 오른쪽처럼 그래프 모양으로 출력하도록 프로그램을 작성하세요.
0.1 ~ : *
0.2 ~ : ***
0.3 ~ : *
... 이하 생략 ...
코드)
#include <stdio.h>
#define VMAX 21
typedef struct {
char name[20];
int height;
double vision;
} PhysCheck;
double ave_height(const PhysCheck dat[], int n) {
int i;
double sum=0;
for(i=0; i<n; i++)
sum += dat[i].height;
return sum / n;
}
void dist_vision(const PhysCheck dat[], int n, int dist[]) {
int i;
for(i=0; i<VMAX; i++)
dist[i] = 0;
for(i=0; i<n; i++)
if(dat[i].vision >= 0.0 && dat[i].vision <= VMAX/10.0)
dist[(int)(dat[i].vision * 10)]++;
}
int main(void) {
int i;
PhysCheck x[]= {
{"박현규", 162, 0.3},
{"황진아", 173, 0.7},
{"최윤미", 175, 2.0},
{"홍연의", 171, 1.5},
{"이수진", 168, 0.4},
{"김영준", 174, 1.2},
{"박용규", 169, 0.8}
};
int nx = sizeof(x) / sizeof(x[0]);
int vdist[VMAX];
puts("■ □ ■ 신체 검사표 ■ □ ■");
puts(" 이름 키 시력 ");
puts("-----------------------");
for(i=0; i<nx; i++)
printf("%-18.18s%4d%5.1f\n", x[i].name, x[i].height, x[i].vision);
printf("\n 평균 키 : %5.1f cm\n", ave_height(x, nx));
dist_vision(x, nx, vdist);
printf("\n 시력 분포 \n");
for(i=0; i<VMAX; i++) {
int j;
printf("%3.1f ~ : ", i/10.0);
for(j=0; j<vdist[i]; i++)
printf("*");
printf("\n");
}
return 0;
}
실행 결과)
sy@sy:~/algorithm/doit/chap02$ gcc q12.c -o q12
sy@sy:~/algorithm/doit/chap02$ ./q12
■ □ ■ 신체 검사표 ■ □ ■
이름 키 시력
-----------------------
박현규 162 0.3
황진아 173 0.7
최윤미 175 2.0
홍연의 171 1.5
이수진 168 0.4
김영준 174 1.2
박용규 169 0.8
평균 키 : 170.3 cm
시력 분포
0.0 ~ :
0.1 ~ :
0.2 ~ :
0.3 ~ : **
0.6 ~ :
0.7 ~ : **
1.0 ~ :
1.1 ~ :
1.2 ~ : *
1.4 ~ :
1.5 ~ : *
1.7 ~ :
1.8 ~ :
1.9 ~ :
2.0 ~ : *
728x90
반응형
'Algorithm > Do it' 카테고리의 다른 글
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 3장 검색 연습문제 Q3 답안 p.115 (0) | 2019.10.16 |
---|---|
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 3장 검색 연습문제 Q1 답안 p.113 (0) | 2019.10.16 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q10 답안 p.76 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q9 답안 p.75 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q8 답안 p.75 (0) | 2019.10.09 |