このプログラムは、表(写真)に示す3次元の座標(x,y,z)を持つ点A, B, Cについて、点Aと点Bの距離dABと、点Aと点Cの距離dACを計算し、大きい方を出力するプログラムである。 点A(A.x, A.y, A.z)と点B(B.x, B.y, B.z)の距離は、以下の式で求められる。 dab=√(Ax-Bx)^2+(Ay-By)^2+(Az-Bz)^2 2点間の距離を計算する関数distance()を完成させ、正しい出力が得られるよう、このプログラムを修正しなさい。xのy乗、および平方根を与える関数は、math.hで定義されている関数pow()およびsqrt()を用いて良い。 修正したプログラムを教えてください。 #include <stdio.h> #include <math.h> typedef struct{ double x, y, z; } Coordinate; double distance( Coordinate P, Coordinate Q ); int main(void) { Coordinate A = {1, 5, 2}; Coordinate B = {5, 3, 1}; Coordinate C = {2, 8, 4}; double dAB, dAC; dAB = distance( A, B ); dAC = distance( A, C ); if( dAB > dAC ) printf( "AB = %5.3f¥n", dAB ); else printf( "AC = %5.3f¥n", dAC ); return 0; } double distance( Coordinate P, Coordinate Q ){ double d; /*関数を完成させなさい*/ return d; }
C言語関連