【C言語】ユークリッド距離を計算する

2つのベクトル\(A,B\)の距離は

\begin{align}
d=\sqrt{(a_1 – b_1)^2+(a_2 – b_2)^2 + \cdots +(a_{n-1} – b_{n-1})^2+(a_n – b_n)^2}
\end{align}

で与えられる。

以下Cを言語の例。

#include<stdio.h>
#include<math.h>

double norm(double*, double*, int, int);

int main(int argc, char* argv[]) {


    double p1[] = { 0,0};
    double p2[] = { 0,10};

    double d;

    int arrayNumber1 = sizeof p1 / sizeof p1[0];
    int arrayNumber2 = sizeof p2 / sizeof p2[0];

    d = norm(p1, p2, arrayNumber1, arrayNumber2);

    printf("norm -> %f", d);
    return 0;
}

double norm(double* p1, double* p2, int arrayNumber1, int arrayNumber2) {
    if (arrayNumber1 == arrayNumber2) {
        int i;
        double num = 0;
        for (i = 0; i < arrayNumber1; i++) {
            num = num + pow((p1[i] - p2[i]), 2.0);
        }

        printf("%f", num);
        return sqrt(num);
    }
    else {
        return -1;
    }
}

コメント

タイトルとURLをコピーしました