4.1.2 조건문을 사용한 예제 2    [doc]    [smts]

전 절의 예제와 약간 다른 다음 문제를 풀어보도록 하겠다..


2. 세 개의 float 형 숫자를 사용자에게 입력 받아서 가운데 수를 출력하는 프로그램을 작성하라.


 이 문제는 앞의 문제보다는 한 번 더 생각해야 한다. 여기서도 세 float형 변수를  f1, f2, f3 라고 하고 결과값(중간 수)를 저장하는 변수를 fMid 라고 하고 임시값을 저장하는 변수명을 fTmp라고 하자. (Tmp는 temporary 를 줄인 단어임) 알고리듬은 다음과 같이 생각해 볼 수 있다.


(a) f1과 f2 중 작은 수를 fMid 에 저장하고 큰 수를 fTmp에 저장한다.

(b) f3가 fMid보다 크다면 현재 fMid 값이 최소값이라는 의미다. 따라서 f3와 fTmp중 작은 것이 중간값이므로 그것을 fMid에 저장한다.

(c) f3가 fMid 보다 작다면 (a)에서 구한 fMid 값이 중간값이다.

(d) fMid를 출력한다.


 이제 이 알고리듬을 프로그램으로 작성해 보면 다음과 같다.


ex04-07.c
#include  <stdio.h>
int main() {
float f1, f2, f3;
printf("Input three numbers : ");
scanf("%f,%f,%f", &f1, &f2, &f3);
float fMid, fTmp;
if (f1>f2) { // 알고리듬 (a)를 구현한 것임
fMid = f2;
fTmp = f1;
} else {
fMid = f1;
fTmp = f2;
}
if (f3 > fMid) // (b)를 구현한 것임
fMid = (f3>fTmp)? fTmp:f3;
printf("The middle value is %f.", fMid);
}


위에서 보면 알고리듬 (c)가 성립한다면 두 번째 if 문이 실행되지 않고 바로 printf()문이 실행이 되므로 올바르게 작동하는 것을 이해할 수 있을 것이다. 실행 예는 다음과 같다.


Input three numbers : -11,22.5,100.345
The middle value is 22.500000.

'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글

5장 연습문제  (0) 2016.04.11
C언어의 문자열  (0) 2016.04.11
콤마(,) 연산자  (0) 2016.04.04
sizeof 연산자  (0) 2016.04.04
1장 연습문제  (0) 2016.03.28
Posted by 살레시오

댓글을 달아 주세요