至急お願いします

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
fum

至急お願いします

#1

投稿記事 by fum » 14年前

C言語
「○○は××の何日前(後)」を表示させるプログラムを作成したい。
途中ぬけて、おかしい部分があると思いますが・・・
後はもう1個年月日を入力して、差を求めたいのですが、どうすればいいかわかりません。
もしよければわかりやすいプログラム例をつくってください。
曜日が入ってるのもおかしいのかな???

#include <stdio.h>

int weekday(int y,int m,int d)
{
y=y+(m-1)/12;
m=(m-1)%12+1;

if(m<3)
{
y--;
m=m+12;
}

return (y+y/4-y/100+y/400+(m*13+8)/5+d)%7;
}
int main()
{
int y,m,d,ret;
char day[][7] ={"日","月","火","水","木","金","土"};
printf("西暦で年月日を入力してください\n");
scanf("%4d/%2d/%2d",&y,&m,&d);
ret = weekday(y,m,d);
printf("%4d年%2d月%2d日は%s曜日です。\n",y,m,d,day[ret]);
scanf("%d",&d);
return 0;
}

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: 至急お願いします

#2

投稿記事 by bitter_fox » 14年前

はて、デジャブでしょうか?つい先日も非常に似た内容の質問を見た気がします。。。

おお、ありました、こちらです。
http://dixq.net/forum/viewtopic.php?f=3&t=7233
milaさんに敬意を込めて引用させていただきます。
mila さんが書きました: ・比較対象のそれぞれの日付をstruct tm構造体にセットします。
・セットしたそれぞれのstruct tm構造体をmktime関数でtime_t型に変換します。
・difftime関数でtime_t型の差分を計算します。

これにより差分の秒数が得られるので、秒を日数に変換します。(これは単なる割り算です)
うるう年の考慮は不要です。
とのことです。

で、質問者さんのコードについて質問が、あります。

コード:

char day[][7] ={"日","月","火","水","木","金","土"};
この、day[][7]というのはどういった意味でしょうか?下の、二つのうちから選んでみてください。
A.各文字列の長さが不定の文字列を7個宣言する。
B.各文字列の長さが7の文字列を不定個宣言する。

フォーラムルールに従った、質問をよろしくお願いします。
具体的にどこがわからないのか、
また、コードを載せる際は、
codeタグではさんでください。

non
記事: 1097
登録日時: 14年前

Re: 至急お願いします

#3

投稿記事 by non » 14年前

これが、学校の課題であるならば、mktime関数などを使う方法は、先生の題意ではないでしょう。
次の方法で行うことを期待しているはずです。

1 ある西暦年を与えたら、その年が閏年か返す関数を作成する。
   閏年なら1,閏年でないなら0を返す関数
2 ある西暦年月日を与えたら、その年の1月1日からその年月日までの日数を求める。
   int month[]={31,28,31,30,31,30,31,31,30,31,30,31};
   のように、月の日数を定義しておく。または、その月までの累計日数を定義しても良い。
3月以降の場合は1の閏年かのチェックを行い、加算する。
   関数にして、日数を返すようにする。
3 ある西暦年(開始年)1月1日から、終了前年12月31日までの日数を求める。
   forで回し、閏年かチェックして365を加算するか366を加算する。
4 3の日数+2による終了年の日数-2による開始年の日数で答えが求まる。
non

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 至急お願いします

#4

投稿記事 by さかまき » 14年前

関数weekdayはツェラーの公式というものらしいですね。
年月日から曜日を求める方法らしいですが、これは今回やりたい事とはあまり関係なさそうです。
もう1個年月日を入力しても、差は求められませんよ。曜日の差は求められますが。

ここまでは御自分で作ったような印象をあたえる書き方ですが、よそから引用したものですよね?
引用するプログラム自体が今回の目的には適していません。別を探してみましょう。

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 至急お願いします

#5

投稿記事 by さかまき » 14年前

http://detail.chiebukuro.yahoo.co.jp/qa ... 1313296768
あたりの流用から
http://detail.chiebukuro.yahoo.co.jp/qa ... 1051937585
から、ここに至る。という感じですか。

char day[][7]の件は質問者さんの責任ではありませんですね。
自分でやる気はゼロみたい。

閉鎖

“C言語何でも質問掲示板” へ戻る