※ ChatGPTを利用し、要約された質問です(原文:どこを変えればいいですか?)
2次元平面上の2点間の最大距離を求めるプログラム
このQ&Aのポイント
平面上の点の数 n( n ≦ 100 ),及び,n 個の点の座標を配列 x,及び,y に読み込み,すべての点の間の距離を計算し,その距離が最大になる点の組(2つの点の座標.最初に入力した点の座標を最初),及び,その距離を出力するプログラムを書け.
入力された平面上の点の座標から距離が最大になる2点を求め、その距離を出力するプログラムを作成する方法を教えてください。
2次元平面上にある複数の点の座標が与えられた場合、その中で距離が最大になる2点を見つけ、その距離を計算するプログラムを作成したいです。どのような方法を用いれば良いでしょうか?
2次元平面上の2点間の距離
[問題]平面上の点の数 n( n ≦ 100 ),及び,n 個の点の座標を配列 x,及び,y に読み込み,すべての点の間の距離を計算し,その距離が最大になる点の組(2つの点の座標.最初に入力した点の座標を最初),及び,その距離を出力するプログラムを書け.
(入力例) コメントの部分は除く
3 // 点の数
0 10 // 1 番目の点の x 及び y 座標
0 0 // 2 番目の点の x 及び y 座標
20 0 // 3 番目の点の x 及び y 座標
(出力例) コメントの部分は除く
0 10 // 1 番目の点の x 及び y 座標
20 0 // 3 番目の点の x 及び y 座標
22.36・・・ // 2点間の距離
#include <iostream>
#include <math.h>
int main()
{
double max = 0.0, x[100], x1, y[100], y1, r;
int i1, i2, n, m1, m2;
// 点の数
std::cin >> n;
// 点の座標の入力
for (i1 = 0; i1 < n; i1++)
std::cin >> x[i1] >> y[i1];
// 点間の距離の計算
for (i1 = 0; i1 < n-1; i1++) {
for (i2 = i1+1; i2 < n; i2++) {
x1 = x[i1] - x[i2];
y1 = y[i1] - y[i2];
r = sqrt(x1 * x1 + y1 * y1);
if (r > max) {
max = r;
m1 = i1;
m2 = i2;
}
}
}
// 出力
std::cout << x[m1] << " " << y[m1] << std::endl;
std::cout << x[m2] << " " << y[m2] << std::endl;
std::cout << max << std::endl;
return 0;
}