while True:

問題10

𝑛 原子分子を構成する各原子の質量 𝑚𝑖 と座標 (𝑥𝑖, 𝑦𝑖, 𝑧𝑖) を読み込み,質量中心の座標を計算するプログラムを作れ. ただし原子数は 100 以下としてよい.

難易度 ★★☆☆☆

基本的な問題です。重心を求める式にx, y, zを入れるだけで終わりです。原子数ははじめの入力で取得しても構いません。 配列に順次質量と座標を入力し、重心を計算します。正直簡潔に書こうとするとDOのみで事足りますが、しょうがないので無理やり配列を使用します。
program question10
	implicit none
	integer :: n, i
	real :: posx, posy, posz, x, y, z, msum
	real, allocatable :: m(:)
	print *, "input n:"
	read *, n

	allocate(m(n))

	posx = 0
	posy = 0
	posz = 0
	msum = 0

	do i = 1, n
		print *, "input m, x, y, z"
		read *, m(i), x, y, z
		posx = posx + m(i) * x
		posy = posy + m(i) * y
		posz = posz + m(i) * z
		msum = msum + m(i)
	end do

	print *, posx / msum, posy / msum, posz / msum

end program question10
ページのトップへ戻る