Page 92 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 92
27 dist[i] = 0;
28 for(i = 0; i < n; i++)
29 if(dat[i].vision >= 0.0 && dat[i].vision <= VMAX/10.0)
30 dist[(int)(dat[i].vision * 10)]++; 실행 결과
31 } ■ □ ■ 신체검사 표 ■ □ ■
32 이름 키 시력
박현규 162 0.3
33 int main (void)
함진아 173 0.7
34 { 최윤미 175 2.0
35 int i; 홍연의 171 1.5
이수진 168 0.4
36 PhysCheck x[] = {
김영준 174 1.2
37 { "박현규", 162, 0.3 }, 박용규 169 0.8
38 { "함진아", 173, 0.7 }, 평균 키 : 170.3 cm
시력 분포
39 { "최윤미", 175, 2.0 },
0.0 ~ : 0 명
40 { "홍연의", 171, 1.5 }, 0.1 ~ : 0 명
41 { "이수진", 168, 0.4 }, 0.2 ~ : 0 명
0.3 ~ : 1 명
42 { "김영준", 174, 1.2 },
0.4 ~ : 1 명
43 { "박용규", 169, 0.8 } 0.5 ~ : 0 명
44 }; … 이하 생략 …
45 int nx = sizeof(x) / sizeof(x[0]); /* 사람 수 */
46 int vdist[VMAX]; /* 시력 분포 */
47 puts("■ □ ■ 신체검사표 ■ □ ■");
48 puts(" 이름 키 시력 ");
49 puts("----------------------------");
50 for(i = 0; i < nx; i++)
51 printf("%-18.18s%4d%5.1f\n", x[i].name, x[i].height, x[i].vision);
52 printf("\n 평균 키 : %5.1f cm\n", ave_height(x, nx));
53 dist_vision(x, nx, vdist); /* 시력 분포를 구합니다. */
54 printf("\n 시력 분포\n");
55 for(i = 0; i < VMAX; i++)
56 printf("%3.1f ~ : %2d명\n", i/10.0, vdist[i]);
57
58 return 0;
59 }
앞 절에서는 배열에 대해 기본적인 자료형(char, int, float …) 정도만 배웠습니다. C 언어에서
는 배열의 구성 요소로 이런 기본적인 자료형뿐 아니라 열거형, 구조체 등도 허용합니다. 실
습 2-13의 프로그램에서 선언하고 정의한 구조체의 이름은 PhysCheck입니다. 이 구조체는
이름(문자열), 키(int형), 시력(double형)을 가지고 있습니다.
92 C 알고리즘