ITP1_10_A 距離をC++で解いてみた[AIZU ONLINE JUDGE]

AIZU ONLINE JUDGE

こんにちは! mnbd(@mnbbbbbd)です。

AIZU ONLINE JUDGEの「ITP1_10_A 距離」を解いてみましたので、その回答と解説をご紹介いたします。

プログラミング初心者なので、もっといい回答があるに違いありません。

あくまでも「動作はする」サンプルとしてご覧ください。

問題文

2点 P1(x1, y1), P2(x2, y2) の距離を求めるプログラムを作成せよ。

Input

x1, y1, x2, y2 (実数)が空白区切りで与えられます。

Output

P1とP2の距離を実数で1行に出力して下さい。0.0001以下の誤差があってもよいものとします。

https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/10/ITP1_10_A

回答

#include <bits/stdc++.h>
using namespace std;

int main() {
    double x1, y1, x2, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    double ans = sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));
    cout << fixed << setprecision(8) << ans << endl;
    return 0;
}

解説

小数点を扱いますので、double型で4点分の変数を確保します。

後はそれらを受け取って、2点間の距離を求める公式に当てはめます。

平方根を求めるsqrt関数と累乗を求めるpow関数を使っています。

出力形式として、小数点の8桁までを表示するためにfixed >> setprecision(8)を追加しています。

ハマったポイント

平方根や累乗は使ったことがなかったため調べました。

学んだこと

数学の関数は使ったことがありませんでしたが、いろいろあることを知りました。

まとめ

AIZU ONLINE JUDGEの「ITP1_10_A 距離」を解いてみましたので、その回答と解説をご紹介いたしました。

少しずつですが、プログラミングの勉強をしています。
まだ初心者ですが、よかったらつながっていただけると嬉しいです。
Twitterアカウント(@mnbbbbbd

以上です。
読んでいただきありがとうございました!