質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

295閲覧

カレンダーをファイルに保存

pinope

総合スコア9

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/08/05 05:24

編集2019/08/05 06:11

とある年のとある月のカレンダーを表示し、それを指定ファイルに保存する機能をつけたいです。
(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

と入力されるだけで、カレンダーの出力結果は保存されません。
どなたかわかる方がいたら教えて頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/08/05 05:38

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
pinope

2019/08/05 05:42

ご指摘ありがとうございます。 ただいま修正いたしました。
guest

回答1

0

ベストアンサー

エラーは最後の行だけ書いてもほとんど意味がないです。長いですが全部載せるようにしましょう。
多分 No such file or directory ってでてますね?

問題はいくつか有ります。

  1. このエラーの原因

 ruby calendar.rb date.txt
の様に呼ぶと、まず date.textを開いて そこから gets します。
まだないfileなので上のエラーになります。

  1. このままでは data.txtに書きだされません。

f=File.open('data.txt', 'w')
として f.print 某 としなければなりません。

3)ということで、ruby calendar.rb data.txt に書き出すには
getsのまえに filename = ARGV.pop して
f = File.open(filename,"w") して下さい。

数字が詰まってしまうのは printf "%3d ", date としてみて。

投稿2019/08/05 06:21

編集2019/08/05 06:23
winterboum

総合スコア23284

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pinope

2019/08/06 06:12

回答ありがとうございます。 エラーメッセージ気をつけます。 こちらで1度試したいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問