• ベストアンサー

これまた初歩的なことかもしれませんが^^;

Cです。今作成中の、カレンダーを表示させるプログラムの一部なのですが、それを以下に書きます。 ――――――――――――――― int day_of_week(int year, int month, int day) { int a, i, days1 = 0, days2 = 0, alldays, wk; a = (year - 1)/4; days1 = a * 366 + (year - 1 - a)*365 - (year - 1)/100 + (year - 1)/400; for(i=1; i< month ; i++) days2 += day_of_month(year, i); alldays = days1 + days2 + day; wk = alldays % 7; return(wk); } int write_cal(int year, int month) { /* !!! */ } ――――――――――― 関数write_calで、関数day_of_weekの戻り値wkをつかいたいのですが、!!! にそのままday_of_week(int year, int month, int day)を入れると当然コンパイルエラーになります。初歩的なことをわすれているのかもしれませんが、ポインタなどもつかっていいのでやりかた教えてください! int write_cal(int year, int month, int day) にするというのはナシでお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • nagare
  • ベストアンサー率33% (280/831)
回答No.2

これでどうでしょうか? int write_cal(int year, int month) { int day[]={31,28,31,30,31,30,31,31,30,31,30,31}; int write_cal(year, month, day[month-1]); }

その他の回答 (2)

  • madman
  • ベストアンサー率24% (612/2465)
回答No.3

何をしたいのかよくわからないプログラムですが、どうやら曜日を返したいようですね。 write_calの引数にある、年月のカレンダーを表示するなら int write_cal(int year, int month) { int day[]={31,28,31,30,31,30,31,31,30,31,30,31}; int wk; for(i=0; i<day[month-1]; i++) { wk = write_cal(year, month, i); /* このあと表示 */ } } ですね。 うるう年の2月も表示するならもう少し工夫が要るかな。 ただ、普通にカレンダー組むならこんな書き方しないので、学校の課題か何かでしょうか。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

よくわかりませんが、write_cal()関数の中で、day_of_week()関数を呼び出して戻り値を使いたいという事でしょうか? それであれば、write_cal(int year, int month)ではなくて、dayの情報も必要ですよね。おそらく引数で渡されるのだと思いますので追加しておきます。 int write_cal(int year, int month, int day) { int wk ; wk = day_of_week(year,month,day) ; } で良いと思いますが、いかがでしょうか。 もし、これ以上の情報が必要であれば、コンパイル時のエラー内容と、エラーになっている行はどこなのかを補足してください。

関連するQ&A

専門家に質問してみよう