- ベストアンサー
これまた初歩的なことかもしれませんが^^;
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) にするというのはナシでお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これでどうでしょうか? 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)
何をしたいのかよくわからないプログラムですが、どうやら曜日を返したいようですね。 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)
よくわかりませんが、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) ; } で良いと思いますが、いかがでしょうか。 もし、これ以上の情報が必要であれば、コンパイル時のエラー内容と、エラーになっている行はどこなのかを補足してください。