네이버 지식인 답변
# include <stdio.h>
typedef struct {
int left_x;
int left_y;
int right_x;
int right_y;
}RECT;
// function prototype ------------------
void _init_(RECT*); // func (1)
void insert(RECT*); // func (2)
void temp_coordi(RECT*); // func (3)
// -------------------------------------
int main(void) {
RECT rect_node;
_init_(&rect_node);
insert(&rect_node);
temp_coordi(&rect_node);
return 0;
} // end of main function
//--------------------------------------
void _init_(RECT* param) { // func (1)
// 데이터 초기화
// 좌상단
param->left_x = 0x0;
param->left_y = 0x0;
// 우하단
param->right_x = 0x0;
param->right_y = 0x0;
} // end of _init_ function
//--------------------------------------
void insert(RECT* param) { // func (2)
int temp_x = 0x0;
int temp_y = 0x0;
int flag = 0x0;
printf("좌상단점/우하단점의 좌표를 입력하세요(left, top, right, bottom 순)\n");
scanf("%d %d %d %d",
¶m->left_x, ¶m->left_y,
¶m->right_x, ¶m->right_y);
printf("입력된 직사각형: 좌상단점=(%d,%d), 우하단점=(%d,%d)\n",
param->left_x, param->left_y, param->right_x, param->right_y);
while (1) {
if (param->left_x < param->right_x) {
if (param->left_y < param->right_y) {
break;
}
else if (param->left_y > param->right_y) {
// case1-2) 좌상단의 x좌표가 우하단의 x좌표보다 작고
// 좌상단의 y좌표가 우상단의 y좌표보다 큰 경우
// y좌표를 서로 교체
temp_y = param->left_y;
param->left_y = param->right_y;
param->right_y = temp_y;
flag = 1;
break;
}
else {
// case1-3) 좌상단의 y좌표와 우하단의 y좌표가 서로 같은 경우
printf("사각형 영역을 형성할 수 없습니다.\n");
}
}
else if (param->left_x > param->right_x) {
// 좌상단의 x값이 우하단의 x값보다 더 큰 경우
if (param->left_y < param->right_y) {
// 좌상단의 y값이 우하단의 y값보다 더 작은 경우
// x값을 서로 교체
temp_x = param->left_x;
param->left_x = param->right_x;
param->right_x = temp_x;
flag = 1;
break;
}
else if (param->left_y > param->right_y) {
// 좌상단의 y값이 우하단의 y값보다 더 큰 경우
// 좌상단과 우하단의 좌표를 서로 교체
temp_x = param->left_x;
temp_y = param->left_y;
param->left_x = param->right_x;
param->left_y = param->right_y;
param->right_x = temp_x;
param->right_y = temp_y;
flag = 1;
break;
}
else { // param->left_y == param->right_y
printf("사각형 영역을 형성할 수 없습니다.\n");
}
}
else { // param->left_x == param->right_x
printf("사각형 영역을 형성할 수 없습니다.\n");
}
}
if (flag) {
printf("수정된 직사각형: 좌상단점=(%d,%d), 우하단점=(%d,%d)\n",
param->left_x, param->left_y, param->right_x, param->right_y);
}
} // end of insert function
//--------------------------------------
void temp_coordi(RECT* param) { // func (3)
int temp_x = 0;
int temp_y = 0;
printf("한점의 좌표를 입력하세요(x, y) : ");
scanf("%d %d", &temp_x, &temp_y);
if (param->left_x <= temp_x && param->right_x >= temp_x) {
if (param->left_y <= temp_y && param->right_y >= temp_y) {
printf("(%d, %d)는 직사각형 내부에 있습니다. \n", temp_x, temp_y);
}
else {
printf("(%d, %d)는 직사각형 내부에 없습니다. \n", temp_x, temp_y);
}
}
else {
printf("(%d, %d)는 직사각형 내부에 없습니다. \n", temp_x, temp_y);
}
} // end of temp_coordi function
'언어 > c언어' 카테고리의 다른 글
c언어 네이버 지식인 풀이 (0) | 2018.11.17 |
---|---|
네이버 지식인 풀이 (0) | 2018.11.14 |
네이버 지식인 풀이 (0) | 2018.11.10 |
네이버 풀이 (0) | 2018.11.10 |
네이버 지식인 풀이 (0) | 2018.11.07 |