while True:

問題11

ある国の所得税のシステムは次のようになっている. 年間所得が 2,500 ドル未満は課税しない.
2,500 ドル以上 5,000 ドル未満は,控除額 2,500 ドル, 税率 10%
5,000 ドル以上 10,000 ドル未満は,控除額 3,750 ドル, 税率 20%
10,000 ドル以上 20,000 ドル未満は,控除額 5,833 ドル, 税率 30%
20,000 ドル以上 40,000 ドル未満は,控除額 9,375 ドル, 税率 40%
40,000 ドル以上 80,000 ドル未満は,控除額 15,500 ドル, 税率 50%
80,000 ドル以上 は,控除額 26,250 ドル, 税率 60%である.
年間所得をデータとして読み込み課税額を計算するプログラムを作れ. ただし,課税額は次式によって計算し,1 ドル未満は切り捨てるものとする. 課税額=(年間所得一控除額)×税率

難易度 ★☆☆☆☆

基本的な問題です。どうしてこれが課題4の問題なのかわからないくらい簡単です。配列を使う必要があるので、それぞれの控除額や税率を配列に入れるといいでしょう。 金額の上限が下限のちょうど2倍になっていることに気づけば、簡潔に記述することができます。
program question11
	implicit none
	integer :: money, i, percent, koujo, val
	real :: tax
	integer :: num(6) = (/ 2500, 3750, 5833, 9375, 15500, 26250 /)
	print *, "input money:"
	read *, money

	koujo = 0
	percent = 0
	val = 2500

	do i = 1, 6
		if ( val <= money .and. money < (val * 2) ) then
			koujo = num(i)
			percent = i * 10
			exit
		end if
		val = val * 2
	end do

	if (160000 <= money) then
		koujo = 26250
		percent = 60
	end if

	print *, (money - koujo) * 0.01 * percent

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