#include <stdio.h>
#include <math.h>
void print(int *x, int *y){
printf("(x,y)의 좌표를 입력하세요 : ");
scanf("%d %d",x,y);
}
int coordinateCompression(int coordinateOne, int coordinateTwo){
int coordinate=1;
for(int i=0;i<2;i++){
coordinate*=(coordinateOne-coordinateTwo);
}
return coordinate;
}
double calculDistance(int x, int y){
double tmp = (double)(x+y);
double anyNumber = (double)(x+y)/2;
double sqrtNumber = sqrt(x+y);
for(int i=0;i<16;i++){
anyNumber = (anyNumber+(tmp/anyNumber))/2;//바빌로니아 법
printf("%f \n",(anyNumber-sqrtNumber)/sqrtNumber*100);
}
return anyNumber;
}
int main(void){
int x1,y1;
int x2,y2;
print(&x1,&y1);
print(&x2,&y2);
int x = coordinateCompression(x1,x2);
int y = coordinateCompression(y1,y2);
printf("(%d,%d),(%d,%d)의 거리는 %f입니다.",x1,y1,x2,y2,calculDistance(x,y));
}
바빌로니아법과 sqrt의 오차율을 for문을 돌리면서 나타내는데 점점 차이가 안나는 것을 볼 수 있다