2次元平面上の2点間を計算する関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Makoto

2次元平面上の2点間を計算する関数について

#1

投稿記事 by Makoto » 8年前

2次元平面上の2点間の距離を計算する関数distanceを作成したいのですが分かりません。ご教授お願いします。
double distance(double *p1, double *p2);
/* 点p1とp2との距離を計算して返却する */
各点の座標は,要素数2の1次元配列を用いて,要素番号0にx座標,要素番号1にy座標を格納すること.
実行例
点p1の入力
1 2
点p2の入力
2 3
2点間の距離は1.414214

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

double distance(double *, double *);

int main(void)
{
double p1[2], p2[2], d;

printf("点p1の入力¥n");
scanf( ・・・ );
printf("点p2の入力¥n");
scanf( ・・・ );

d = distance( ・・・ );
printf("2点間の距離は%f¥n", d);

return 0;
}

コード:

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

double distance(double *, double *);

int main(void)
{
    double p1[2], p2[2], d;

    printf("点p1の入力\n");
    scanf("%lf %lf", &p1[0], &p1[1]);
    printf("点p2の入力\n");
    scanf("%lf %lf", &p2[0], &p2[1]);

    d=distance(p1,p2);
    printf("2点間の距離は%f\n", d);

    return 0;
}

double distance(double *p1, double *p2)
{
    double n, i, j, d;
    n=double pow((p2[0]-p1[0]),2);
    i=double pow((p2[1]-p1[1]),2);
    j=n+i;
    d=double sqrt(j);
    
    return d;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 2次元平面上の2点間を計算する関数について

#2

投稿記事 by みけCAT » 8年前

何がわからないのかよくわかりませんが、powやsqrtの前に入っている余計なdoubleを消せばコンパイルが通ってそれっぽい結果が出ました。
オフトピック
逆に、どうしてn+iの前には余計なdoubleをつけていないのでしょうか?関数呼び出しじゃないからかな?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

box
記事: 2002
登録日時: 14年前

Re: 2次元平面上の2点間を計算する関数について

#3

投稿記事 by box » 8年前

コード:

// double型にnとかiとかjとかいう変数名を付けているのが何となく違和感があったので、
// 思い切ってそういう変数を使わないようにしてみた

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

double distance(double *p1, double *p2);

int main(void)
{
    double p1[2], p2[2];

    printf("点p1の入力\n");
    scanf("%lf %lf", &p1[0], &p1[1]);
    printf("点p2の入力\n");
    scanf("%lf %lf", &p2[0], &p2[1]);
    printf("2点間の距離は%f\n", distance(p1, p2));
    return 0;
}

double distance(double *p1, double *p2)
{
    return sqrt(pow(p2[0] - p1[0], 2) + pow(p2[1] - p1[1], 2));
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

“C言語何でも質問掲示板” へ戻る