とある年のとある月のカレンダーを表示し、それを指定ファイルに保存する機能をつけたいです。
(calendar.rb)
File.open('foo.txt', 'w') def calc_day(year, month,d=1) if month == 1 || month == 2 month += 12 year -= 1 end h = year / 100 y = year % 100 m = month (y + (y / 4) + (h / 4) - (2 * h) + ((13 * (m + 1)) / 5) + d) % 7 end def leap_year_judge(year) case when (year % 400).zero? true when (year % 100).zero? false when (year % 4).zero? true else false end end def print_date(year_date, month, current_day) (1..year_date[month]).each do |date| print format("%3d ", date) current_day = current_day+1 if current_day % 7 == 0 print '\n' end end end def show_calendar(year, month, day) year_days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] uruu_year_days = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] day -= 1 day += 7 if day < 0 uruu_year_flag = leap_year_judge(year) puts "カレンダーを表示します" puts " Sun Mon Tue Wed Thu Fri Sat" day.times do print " " end if uruu_year_flag print_date(uruu_year_days, month, day) else print_date(year_days, month, day) end end puts "任意の年と月のカレンダーを表示します" print "西暦を入力してください : " year = gets.to_i print "月を入力してください : " month = gets.to_i day = calc_day(year, month) show_calendar(year, month, day)
これだと、例えばruby calendar.rb date.txt
と新しいdate.txtに保存しようとしても出来ません。
ただdate.txtに、
任意の年と月のカレンダーを表示します
西暦を入力してください:
月を入力してください:
カレンダーを表示します
sun mon tue wed thu fri sat
と入力されるだけで、カレンダーの出力結果は保存されません。
どなたかわかる方がいたら教えて頂きたいです。
回答1件
あなたの回答
tips
プレビュー