0
6

More than 3 years have passed since last update.

Ruby 給料の計算プログラム

Posted at

はじめに

今回は標準入力からアルバイトの給与の計算プログラムを作っていきます。

給料は以下のルールで決まっています。

・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変数を出力して合計金額出す!!
これで一応プログラムの完成です。

最後に

一応プログラムはできましたが修正点がたくさんあると思います。
間違っっているところはご指摘いただけると幸いです。

0
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
6