こんにちは! 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)
以上です。
読んでいただきありがとうございました!