ページ 11

お願いします

Posted: 2009年7月08日(水) 02:10
by ユーリ
#include <stdio.h>

int main(void)
{
	int y,m,d,ze;

printf("何年かを入力して下さい");
scanf("%d",&y);
printf("何月かを入力して下さい");
scanf( "%d",&m);
printf("何日かを入力して下さい");
scanf( "%d",&d);

ze=(y+(y/4)-(y/100)+(y/400)+(13*m+8)/5+d)%7;
printf("年=%d 月=年%d 日年=%d",y,m,d,ze);  
switch(ze){
case 0:
printf("日曜日\n");
break;
case 1:
 printf("月曜日\n");
break;
case 2:
printf("火曜日\n");
break;
case 3:
printf("水曜日\n");
break;
case 4:
printf("木曜日\n");
break;
case 5:
printf("金曜日\n");
break;
case 6:
printf("土曜日\n");
break;

}

return 0;
}
ツェラーの公式をつかって何年の何月の何日が何曜日と表示するプログラムなんですが
うまくいきません。ご指導のほどお願いします。

Re:お願いします

Posted: 2009年7月08日(水) 02:21
by b
とりあえず、タイトルが「お願いします」はないんじゃないかな。

Re:お願いします

Posted: 2009年7月08日(水) 02:22
by Mr.AA
「質問です」とか「お願いします」とか、一覧見てもそれがどの質問が何の質問なのかわからない。
もう少し質問の内容に合った適切なタイトルをつけてください。

Re:お願いします

Posted: 2009年7月08日(水) 07:15
by フリオ
 
 人に見せるソースは、インデントのつけ方を考えた方がいいです。
 "解決しました"だけでなく、どう解決したのか書いてほしいです。
 "うまくいきません"だけでなく、どう"うまくいかない"のか書いてほしいです。

 ツェラーの公式について調べなおしてみてはどうでしょうか。
 

Re:お願いします

Posted: 2009年7月08日(水) 07:24
by conio
タイトル以外に、質問も良く分かりません。
「プログラムがうまく行きません」だと、何がどう上手くいかないのかが不明です。

こちら側で実行して、何を聞きたいのかを推測しないといけません。
場合によっては、見当違いの回答が返って来る可能性もありますよ。

--------------------------------------------
①エラーが出て、エラーの対処が分からない
②実行できるものの、意図した結果にならない
③その他の問題が発生した
--------------------------------------------
上記のように具体的に述べたほうが良いと思います。
そして、preタグも使うべきです。


で、実行してみたんですが、セミコロンが全角、printf関数の後ろに全角の空白がありました。
恐らく、どこからかコピペしてそのまま実行したんじゃないですかね?
(自分も、試しに大学の講義の資料をコピペ・実行して失敗した事があります)

-------------------------------------------------------------------
int main(void)
{
	int y,m,d,ze;
	char* day[7] = {"日","月","火","水","木","金","土"};

	printf("何年かを入力して下さい");scanf("%d",&y);
	printf("何月かを入力して下さい");scanf( "%d",&m);
	printf("何日かを入力して下さい");scanf( "%d",&d);

	ze = (y+(y/4)-(y/100)+(y/400)+(13*m+8)/5+d)%7;
	printf("%3d年%3d月%3d日は\n",y,m,d);
	printf("%s曜日です。\n",day[ze]);

	return 0;
}
-------------------------------------------------------------------
こんな感じでいいんじゃないでしょうか。
switch文が冗長になってしまっていたので、少し変更してあります。

【追記】
ユーリさんのプログラムはprintf関数のところもおかしいです。

--------------------------------------------------------------------
printf("年=%d 月=年%d 日年=%d",y,m,d,ze);
--------------------------------------------------------------------
最後のzeに対応する書式指定文字がありません。

Re:お願いします

Posted: 2009年7月08日(水) 08:30
by バグ
ついでに私からもひとつ。
解決した場合も「解決しました。ありがとうございました」だけではなく、どこをどのように変更して解決したのかを書くべきです。
似たような事で困っている人の為にもなりますしね(o^-')b

Re:お願いします

Posted: 2009年7月08日(水) 20:09
by box
>conioさん

printf文ではなくて、printf関数です。
正確な用語を使う方が、伝わりやすいと思います。

Re:お願いします

Posted: 2009年7月08日(水) 20:41
by conio
指摘ありがとうございます。
直しておきました(_ _)

Re:お願いします

Posted: 2009年7月09日(木) 00:09
by ユーリ
ありがとうございました。
スイッチ文の方で頑張ってみたらできました。
配列の方もチャレンジしてみます