はじめに
今回は標準入力からアルバイトの給与の計算プログラムを作っていきます。
給料は以下のルールで決まっています。
・9 時から 17 時まで : 時給 X 円 (通常の時給)
・17 時から 22 時まで : 時給 Y 円 (夜の時給)
・それ以外の時間 : 時給 Z 円 (深夜の時給)
あなたの N 日間の出勤時刻と退勤時刻が 1 時間単位で与えられます。
N 日間の合計で得られる金額を計算してください。
入力例 の場合、4 日間で時給 X 円、Y 円、Z 円となる時間帯を満遍なく働いており、
金額の合計は Z×9 + X×8 + Y×5 + Z×1 = 1500×9 + 1000×8 + 1300×5 + 1500×1 = 29500 円となります。
入力例
1000 1300 1500
4
0 9
9 17
17 22
22 23
出力例
29500
ソース
ruby.rb
m = gets.split.map &:to_i
# 自給額の取得
nums = gets.to_i
# 出勤日数の取得
times = []
while time = gets
times << time.chomp.split(' ').map(&:to_i)
end
sum=0
(0..nums-1).each do |i|
(times[i][0]+1..times[i][1]).each do |t|
if t<=9
sum += m[2]
elsif t<=17
sum+= m[0]
elsif t<=22
sum+= m[1]
else
sum+= m[2]
end
end
end
puts sum
解説
ruby.rb
times = []
while time = gets
times << time.chomp.split(' ').map(&:to_i)
end
複数行(3行目以降の出勤時間)の複数要素を取得。
while time = getsとすることで、標準入力の値を全て取得するまで繰り返されます
ruby.rb
sum=0
(0..nums-1).each do |i|
(times[i][0]+1..times[i][1]).each do |t|
# 自給計算処理
end
end
ruby.rb
(0..nums-1).each do |i|
#i変数を取り出すと
# 0 1 2 3
出勤日数をi変数で一つづつ取得する
ruby.rb
(times[i][0]+1..times[i][1]).each do |t|
# t変数を取り出すと(1日目)
# 1 2 3 4 5 6 7 8 9
1日の出勤時間帯をt変数で取得する
*例ではこれを四日間繰り返す
ruby.rb
if t<=9
sum += m[2]
elsif t<=17
sum+= m[0]
elsif t<=22
sum+= m[1]
else
sum+= m[2]
end
if文でt変数で取得する1時間ごとの自給を繰り返し取り出しsum変数に代入する
例だと四日分繰り返した後にsum変数を出力して合計金額出す!!
これで一応プログラムの完成です。
最後に
一応プログラムはできましたが修正点がたくさんあると思います。
間違っっているところはご指摘いただけると幸いです。