#include < stdio.h >
#include < stdlib.h >
#include < time.h >
#define DISTANCE(x, y) ((x)*(x) + (y)*(y))
typedef struct __COORD
{
int x;
int y;
} COORD;
void main()
{
srand( time( NULL ) );
COORD coord[10]; // 좌표정보
int index = 0; // 인덱스.
int i, x, y, min = 0;
while ( index < 10 )
{
int tempX = rand() % 100;
int tempY = rand() % 100;
for (int i = 0; i < index; i++)
{
// 중복처리.
// 이전에 입력한 좌표중에 같은 부분이 있으면, 무효화 하고 다시 입력.
if ( coord[i].x == tempX && coord[i].y == tempY )
{
break;
}
}
// 중복된 좌표값이 없으면 이 값을 저장.
if (i == index)
{
coord[index].x = tempX;
coord[index].y = tempY;
index++;
}
}
//좌표를 입력받음.
printf("input two integer: ");
scanf("%d %d", &x, &y);
// 배열 처음 값을 가장 가까운 점의 위치로 초기화.
index = 0;
min = DISTANCE(coord[0].x-x, coord[0].y-y);
// 배열 두번째 부터 가장 가까운 점의 위치 찾기
for (i = 1; i < 10; i++)
{
int temp = DISTANCE(coord[i].x - x, coord[i].y - y);
// 이전에 선택했던 점보다 더 가까운 위치이면 갱신
if (temp < min)
{
index = i;
min = temp;
}
}
// 가장 가까운 점 위치 출력
printf("가장 가까운 저장된 점은 (%d,%d)입니다.\n", coord[index].x, coord[index].y);
}
제대로 짠거같은데..
경고 2 warning C4258: 'i' : for 루프의 정의가 무시되고 바깥쪽 범위의 정의가 사용됩니다.
이렇게 경고가 계속뜸.. 저 굵은 표시한 줄에서 오류가났는데, for 루프는 앞에서 끝났는데 왜 저기서 오류가나는거죠
error가 아니고 warning인데.. 정 찜찜하면 j나 k로 바꿔서 ㄱㄱ
아나 제가 실수함.. ㅋㅋㅋ 죄송죄송 이거 답변안하셔도되요
for (int i = 0; i < index; i++)이부분에 int i 가아니고 걍 i인데 그래서 오류가난듯