【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21253

カレンダーの作り方について!!
投稿者---momo(2005/06/07 20:27:55)


カレンダーをC言語で作るように言われているんですが、作り方がわかりません…
教えてくれないでしょうか!!
結構条件は出されているんですが…
まず年と月を入力してその月のカレンダーの出し方を教えてください!!
その時
Zellerの公式
m=1あるいは2の場合:y←y−1、m←m+2
m≧3の場合:m←m−2
と変換して次式を計算する。
x←y+(y/4)-(y/100)+(y/400)+{(13*m-1)/5}+d
n←x mod 7 n←x % 7
ここで[n]はnの小数点以下の切り捨てを意味する。
こうして求めたnの値が曜日を指定する。
n=0:日 n=1:月   n=2:火
n=3:水 n=4:木   n=5:金
n=6:土

閏年の判定
1)西暦が4で割り切れると閏年である。
2)西暦が4で割り切れて、100で割り切れなければ閏年である。
3)西暦が100で割り切れて、400で割り切れなければ閏年でない。
これを用いてだそうです!!
そして、実行例としては
*表示例
2005/6
SUN   MON  TUE  WED   THU  FRI   SAT
1    2   3    4
5   6   7 8    9  10   11
12  13  14 15   16  17   18 
19  20  21 22   23  24   25
26  27  28 29   30

こんな感じだそうです!!
そして、その次の入力として
0を入れたら終了して、
1を入れたらまた新しい年を入力に戻って
2を入れたら今表示されている月の次の年の表示になり
3を入れたら前の月の表示になるようにするそうです

後、関数とポインタを使えって言ってました。
長くてごめんなさい!!
だれか教えてくれないでしょうか!!!



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:カレンダーの作り方について!! 21254 Blue 2005/06/07 20:34:06


No.21254

Re:カレンダーの作り方について!!
投稿者---Blue(2005/06/07 20:34:06)


とりあえず、
【掲示板ご利用上の注意】に目を通してください。

その上で、あなたが最大限に努力したことを提示(出来たところまでのソースの提示)して、
具体的にドコがわからないかを聞いててください。



この投稿にコメントする

削除パスワード

No.21255

Re:カレンダーの作り方について!!
投稿者---momo(2005/06/07 20:54:44)


すみません!!!
え〜とですね。今書いているのはここまでです。
#include <stdio.h>
void fx1(int *ay,int *am)
int main(void)
{

int y,m,bias,i;

printf("year ");
scanf("%d",&y);

printf("month ");
scanf("%d",&m);
fx1(&y,&m)
}

void fx1(int *ay,int *am)

int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

if(am>=3)
{
am=am-2;
}
else
{
ay=ay-1;
am=am+2;
}

x=ay+(ay/4)-(ay/100)+(ay/400)+{(13*am-1)/5}+1;
for(i=0;i<am;i++)
n=x%7;
printf(" SUN MON TUE WED THU FRI SAT\n");
for(i=0;i<n;i++)
{
printf(" ");
}
for(i=1;i<=month[am];i++){
printf("%4d",i);

}
}

実際これ家で書いたんですが、家ではC言語の動きを確認できなくて、実際
全然できてないですが、どんな感じなのか、学校に行かないとわからないんですが、今は、うるう年の設定と、最後の次の月にするとか前の月にするしかたが思いつきません。実際これみた感じでカレンダーの表示のところとかはどうですかね?
また長くなってすみません!!


この投稿にコメントする

削除パスワード

No.21256

Re:カレンダーの作り方について!!
投稿者---まきじ(2005/06/07 21:54:23)


「C言語ソース⇒HTML形式ツール」でHTML形式にして下さい。

コンパイラーなら、
Visual C++ Toolkit2003 や Borland C++ Compiler などが
無料で提供されています。


この投稿にコメントする

削除パスワード

No.21257

Re:カレンダーの作り方について!!
投稿者---momo(2005/06/07 22:00:29)


000: /*** カレンダーの途中 ***/
001: #include <stdio.h>
002: void fx1(int *ay,int *am)
003: int main(void)
004: {
005: 
006: int y,m,bias,i;
007: 
008: printf("year ");
009: scanf("%d",&y);
010: 
011: printf("month ");
012: scanf("%d",&m);
013: fx1(&y,&m)
014: }
015: 
016: void fx1(int *ay,int *am)
017: 
018: int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
019: 
020: if(am>=3)
021: {
022: am=am-2;
023: }
024: else
025: {
026: ay=ay-1;
027: am=am+2;
028: }
029: 
030: x=ay+(ay/4)-(ay/100)+(ay/400)+{(13*am-1)/5}+1;
031: for(i=0;i<am;i++) 
032: n=x%7;
033: printf(" SUN MON TUE WED THU FRI SAT\n");
034: for(i=0;i<n;i++)
035: { 
036: printf(" ");
037: }
038: for(i=1;i<=month[am];i++){
039: printf("%4d",i);
040: 
041: }
042: }
043: 

え〜とこれでいいですかね??
お願いします。


この投稿にコメントする

削除パスワード

No.21258

Re:カレンダーの作り方について!!
投稿者---まきじ(2005/06/07 22:32:33)


指定した年月で、カレンダーの表示ができているのであれば、
そんなに難しい事ではないと思いますが。

while 文 と select 文 あるいは if 文を使えば、できるでしょう。

>0を入れたら終了して、

0 が入力されるまで繰り返せばよい。

>1を入れたらまた新しい年を入力に戻って

printf("month ");
scanf("%d",&m);
fx1(&y,&m)
の部分を実行すればよい。

>2を入れたら今表示されている月の次の年の表示になり

m + 1 を 引数に、fx1 関数を呼び出す。

>3を入れたら前の月の表示になるようにするそうです

m - 1 を 引数に、fx1 関数を呼び出す。


この投稿にコメントする

削除パスワード

No.21260

Re:カレンダーの作り方について!!
投稿者---momo(2005/06/07 22:59:30)


まきじさんありがとうございます。

でも、カレンダーがつくれないんですよ…

でも、とても参考になりました。ありがとうございました。


この投稿にコメントする

削除パスワード

No.21262

Re:カレンダーの作り方について!!
投稿者---Blue(2005/06/07 23:13:19)


Zellerの公式についてですが、ここのサイトに
演習問題として取り上げています。参考にしてみては。
演習16-3

Zellerの公式で 指定月の1日が何曜日かをもとめて、表示する時に
指定の曜日から出力できるようにできれば、カレンダーを表示できると思います。

それと、全体的にポインタの使い方があやしいですね。。。
>if(am<=3)
>am=am-2;
・・・
一度コンパイルしてみれば少しはおかしいと気づくとおもいます。
無料のコンパイラの紹介がまたまたこのサイトにありますので参考にしてみては。
少し詳しい開発環境設定の説明



この投稿にコメントする

削除パスワード

No.21267

Re:カレンダーの作り方について!!
投稿者---momo(2005/06/07 23:37:56)


ありはとうございます。
もう一度勉強してみます。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧