-PR-
解決済み

カレンダー表示のこと

  • 暇なときにでも
  • 質問No.32495
  • 閲覧数52
  • ありがとう数5
  • 気になる数0
  • 回答数8
  • コメント数0

以前にもさせてもらった質問の続きですが、月日を入力して実行すると、曜日は正確に出るのですが、日が正確に出ないのです。1月は問題ないのですが、例えば、2月5日を入力すると、日に1月分が足されてしまい、2月36日となってしまいます。2月以降も同様です。
for(i=0;i<tuki-1;i++){
hi=hi+dates[i];
と組み立ててるのですが、どうやら、hi=,,,のところがおかしい感じがするのですが、この文はこれでは間違いですか?
通報する
  • 回答数8
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.5
レベル7

ベストアンサー率 25% (7/27)

このソース、コンパイルエラー出ませんか?
for文の引数変数名が違っていたりします。

それを考慮に入れても、月入力で1を入れると
当然forループは回りません。
でも、1月は問題ないんですよね!?
あと、1月1日は、必ず月曜日ということでいいのでしょうか?
多分やりたいことは、1月1日から積算された日が何曜日になるかを
やりたいんだと思うのですが、そういう意図であれば、積算変数を
作ったほうが無難です。
このままのやり方だと、入力されたdayが、for文内で積算されて
表示するときにまた戻さなくてはなりません。
-PR-
-PR-

その他の回答 (全7件)

  • 回答No.2
レベル14

ベストアンサー率 24% (612/2465)

どのような表示を行う予定なのでしょうか?

前回の質問のソースから考えて、入力した月・日に対して、
○月○日は、日曜日です。
と表示するのでしょうか?
それなら、入力した月・日を表示すれば問題ないと思いますが、もし別の出力であれば、どういった表示をしようとしてるのかが、解らないので回答のしようもありません。
補足コメント
noname#1519

エラーの意味を聞いたときに自分で作ってみたものを書いたのですが、このようにやってみたいのです。
#include <stdio.h>
main()
{
int i,day,month;
int dates[]={31,28,31,30,31,30,31,31,30,31,30,31};

printf(" 月を入力してください → ");
scanf("%d",&month);
printf(" 日を入力してください → ");
scanf("%d",&day);

for(i=0;i<monthi-1;i++){
day=day+dates[i];

if(day%7=0){
printf("%d月%d日は、日曜日です。");
}
else if(day%7=1){
printf("%d月%d日は、月曜日です。");
}
else if(day%7=2){
printf("%d月%d日は、火曜日です。");
}
else if(day%7=3){
printf("%d月%d日は、水曜日です。");
}
else if(day%7=4){
printf("%d月%d日は、木曜日です。");
}
else if(day%7=5){
printf("%d月%d日は、金曜日です。");
}
else if(day%7=6){
printf("%d月%d日は、土曜日です。");
}

}
投稿日時 - 2001-01-25 17:53:05


  • 回答No.1
レベル6

ベストアンサー率 7% (1/14)

月と日を入力して、月、日、曜日を表示するプログラムですよね?

でしたら、hiは入力値のまま表示させないといけません。
これだと、1月1日から入力日付までの日数が、日の所に出てしまいます。
補足コメント
noname#1519

と、いうことはhi=,,,のところのほかにも、改良する余地があるということでしょうか。文が前後になりましたが、そうです、つき、日、曜日を表示したいのです。
投稿日時 - 2001-01-25 18:00:14
  • 回答No.3
レベル14

ベストアンサー率 24% (612/2465)

補足見ました。前のままのソースですね(^^

printf("%d月%d日は、日曜日です。",month,day);

でいいんじゃないんでしょうか?
要求した入力をそのまま出力しましょう。
算出するのは、曜日のみなので、計算結果の月・日を出力する必要はありません。
余分な処理はバグの素です。
補足コメント
noname#1519

以前に書いた質問をコピーして貼り付けてしまったので、printf("%d月%d日は、日曜日です。",month,day);のmonth,dayを加えて補足に書くことを忘れれしまいました。すると、for文の次のday=day+dates[i]は省いてしまっていいのでしょうか。それとも新たに書くことがあるのでしょうか。
投稿日時 - 2001-01-25 18:20:44
  • 回答No.4
レベル14

ベストアンサー率 24% (612/2465)

あっ、すみません、良くソースを見ていませんでした。

入力した日数をそのまま、曜日算出用に足しこんでいるんですね。

入力したdayはそのままで、別の変数を用意し、dayの入力後にその変数に代入して入力した日を確保します。
で、printf分でその確保した日を表示します。
補足コメント
noname#1519

代入ということは、つまり、冒頭のところで例えばaを用意してa=dayという形をとって最後のprintfでday→aにするということでしょうか
投稿日時 - 2001-01-25 19:41:23
  • 回答No.7
レベル14

ベストアンサー率 24% (612/2465)

補足に対する回答
そうです。
あまりなんでも聞かずに、とりあえずやって見ましょう。
お礼コメント
noname#1519

はい、やってみます。
投稿日時 - 2001-01-25 19:57:45
  • 回答No.6
レベル7

ベストアンサー率 25% (7/27)

下で解答したsenjyuです。
積算ではなく加算です。
失礼しました。
補足コメント
noname#1519

コンパイルエラーは出ないのですが、日にちがその日の前まですべて加算されて出てしまうのです。結局はエラーてことですね。それと、申し遅れましたが、このカレンダーは2001年度版でやってみていますので、今年の日付を○月○日は何曜日だと表示するように取り組んでいます。
投稿日時 - 2001-01-25 19:23:24
  • 回答No.8
レベル7

ベストアンサー率 25% (7/27)

printf("%d月%d日は、日曜日です。",month,hi);
とやっているのでしょうか?
それとも
printf("%d月%d日は、日曜日です。",month,day);
とやっているのでしょうか?
補足で表示されているソースと質問されている変数が違っているので、
多分、解答している皆さんもどちらなのか迷っているのでは。
ちなみに、下のソースはコンパイルエラーがでます。
hi=dayと想定して、
曜日判定をしたら、加算されたhiを元に戻しましょう。
戻し方は、月と各月の日数がわかっているのですから
引き算するだけです。
加算しているのだから、その逆をやればいいのです。

あと、曜日は不変ですから、配列変数に入れると
if文はいらなくなりますよ。
補足コメント
noname#1519

まぎらわしかったですね。すみません。month,dayでやっています。
投稿日時 - 2001-01-26 19:23:57
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ