c·c++/c 프로그래밍

math.h 헤더없이 sqrt계산하기

바로이순간 2013. 6. 2. 00:07

#include <stdio.h>

double sqrt(double x) {

    double r, z, eps=0.00000000001;

    if(x<=eps) {

        printf("x가 너무 작습니다.");

        return 0;

    }

    r=1;

    while(1) {

        r=0.5*(r+x/r);

        z=x-r*r;

        if(-eps<z && z<eps) { break; }

    }

    return r;

}

int main() {

    double x1, y1, x2, y2, dx, dy, sum;


    printf("첫번째 점의 좌표: ");

    scanf("%lf%lf", &x1, &y1);

    printf("두번째 점의 좌표: ");

    scanf("%lf%lf", &x2, &y2);

    dx=x1-x2;

    dy=y1-y2;

    sum=dx*dx+dy*dy;

    printf("두점의 거리는 %g입니다.\n", sqrt(sum));


    return 0;

}