※ 다음 제시문을 읽고 물음에 답하시오.
[문제 1]
주어진 제시문을 활용하여 다음 물음에 각각 답을 하시오. 아래 [그림 1]과 같이 좌표평면 위에 가로의 길이가 $m$, 세로의 길이가 $n$인 직사각형 모양의 종이 $A_1$의 두 모서리가 $x, y$축에 접하도록 놓았다. $A_1$ 종이를 $x$축과 평행한 직선으로 잘라서 생기는 합동인 두 직사각형 중 위쪽에 생기는 직사각형을 $A_2$라 하고, $A_2$에서 원점과 가장 가까운 직사각형의 꼭짓점과 가장 먼 꼭짓점을 각각 $P_2, Q_2$라 하자. 다시 $A_2$를 $y$축과 평행하게 잘라서 생기는 합동인 두 직사각형 중 오른쪽에 생기는 직사각형을 $A_3$라 하고, $A_3$에서 원점과 가장 가까운 직사각형의 꼭짓점과 가장 먼 꼭짓점을 각각 $P_3, Q_3$라 하자. 이와 같은 과정을 [그림 1]과 같이 반복하여 생긴 $i$번째 직사각형을 $A_i$라 하자. $A_i$에서 원점과 가장 가까운 점과 가장 먼 점을 각각 $P_i, Q_i$라 할 때 ($i = 2, 3, 4, \cdots$), 다음 물음에 답을 하시오. (단, $m$과 $n$의 길이의 단위는 생략한다. 답안지에 [문제1]-A, [문제1]-B, [문제1]-C로 표기하고 답안을 작성하시오.)
•
1-A. [그림 1]의 $A_1$의 원점을 $P_1 = (0, 0)$으로 지정하고, 원점과 가장 먼 꼭짓점을 $Q_1 = (m, n)$으로 표기한다. 아래 소스코드의 함수
rect_area(m, n, i)를 주어진 코드와 함께 이용하여
[문제-1-A-코드]의 박스(라인넘버 9~15) 부분에 $A_i$의 시작점 $P_i$와 끝점 $Q_i$의 좌표를 라인넘버 16에서 출력되게 코드를 완성하시오.
•
1-B. [문제1]-A의 조건들과 동일하게 적용한다. [그림 1]의 $i$번째 직사각형 $A_i$의 넓이를 (소스코드의 넓이 변수명은
area로 하시오) 계산하시오. 아래 소스코드에 함수
rect_area(m, n, i)의
[문제-1-B-코드] 부분에 코드를 작성하시오. (단, 넓이의 단위는 생략하고, 코드의 사소한 문법적 오류는 평가에 반영되지 않는다.)
•
1-C. [문제1]-A와 [문제1]-B의 결과를 이용하여 아래 프로그램 코드의 빈칸을 모두 올바르게 작성하였을 때, 프로그램의 실행 시 출력 결과를 작성하시오. <15~20줄>
[40점]
1: #include<stdio.h>
3: void rect_area(int m, int n, int i) {
5: int k; float px = 0, py = 0, area;
8: // [문제-1-A-코드] 변수 k, i, px, py, m, n만 사용하여, 7라인 이내로 작성하시오 (라인넘버 9-15).
16: printf("i=%d, P(i)=(%f,%f), Q(i)=(%d,%d)
", i, px, py, m, n);
19: // [문제-1-B-코드] 4라인 이내로 작성하시오 (라인넘버 19-22).
24: printf("A(i) 넓이 = %f
", area);
25: }
28: int main() { rect_area(80, 40, 10); return 0; }