No.15526![]() |
配列 投稿者---やま(2004/07/14 22:56:35) |
||
西暦年、月、日とその何日後かを入力し、その日が西暦何年何月何日であるかを示すプログラムってできますか? |
No.15527![]() |
Re:配列 投稿者---あかま(2004/07/14 23:13:39) |
||
>西暦年、月、日とその何日後かを入力し、その日が西暦何年何月何日であるかを示すプログラムってできますか? できます。 「カレンダー」あたりで過去ログ検索してください。 |
No.15533![]() |
Re:配列 投稿者---やま(2004/07/14 23:59:15) |
||
ご指摘ありがとうございます。過去ログを探したんですがありませんでした。 |
No.15534![]() |
Re:配列 投稿者---ともじ(2004/07/15 00:37:24) |
||
>ご指摘ありがとうございます。過去ログを探したんですがありませんでした。 ここはどうでしょう。 http://f1.aaa.livedoor.jp/~pointc/log359.html |
No.15644![]() |
Re:配列 投稿者---やま(2004/07/18 17:36:19) |
||
とりあえず、何日後が365日以下の場合は、自力でできたのですが、 #include <stdio.h> #define TUKINONIXTUSUU (13) int main(void) { int tuki[TUKINONIXTUSUU]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int year,month,day,after,n,s,d,r,i=0; printf("year? "); scanf("%d",&year); printf("month? "); scanf("%d",&month); printf("day? "); scanf("%d",&day); printf("nannitigo? "); scanf("%d",&after); if(year%400==0){ tuki[2]=29; }else if(year%100==0){ tuki[2]=28; }else if(year%4==0){ tuki[2]=29; }else{ tuki[2]=28; } n=tuki[month]-day; if(n>=after){ s=day+after; printf("%d nen%d gatu%d niti\n",year,month,s); } if(n<after){ d=day+after; for(month;d>tuki[month];month=month+1){ d=d-tuki[month]; } printf("%d nen%d gatu%d niti\n",year,month,d); } } 一年を超えると、閏年が来る関係で、うまく表示できません。 どなたか何かアドバイスをいただけませんか? |
No.15649![]() |
Re:n日後の年月日を求める 投稿者---ともじ(2004/07/19 00:42:10) |
||
>とりあえず、何日後が365日以下の場合は、自力でできたのですが、 >一年を超えると、閏年が来る関係で、うまく表示できません。 No.15534で紹介した過去ログはお役に立ちませんでしたか。 過去ログのcalc_dateはそのままn日後の日付を求めるのに使えますが。 それとも、time.hの関数は使わずに解くのでしょうか。 #include <stdio.h> int is_leap(int y) { if (y%4 == 0 && (y%100 != 0 || y%400 == 0)) return 1; else return 0; } int main(void) { int tuki[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int year,month,day,after,n,d; printf("何年? "); scanf("%d",&year); printf("何月? "); scanf("%d",&month); printf("何日? "); scanf("%d",&day); printf("何日後? "); scanf("%d",&after); day += after; while(1) { if (month == 2) n = tuki[month-1] + is_leap(year); else n = tuki[month-1]; if (n >= day) break; day -= n; month++; if (month > 12) { month = 1; year++; } } printf("%d年%d月%d日\n", year, month, day); return 0; } それから、題名の「配列」はあまり適切ではないように感じました。 また、ソースを添付する際には上記、HTML変換ツールを使って字下げ してくださるようにお願いします。 |
No.15531![]() |
Re:配列 投稿者---SASA(2004/07/14 23:35:11) |
||
SASAです。 >西暦年、月、日とその何日後かを入力し、その日が西暦何年何月何日であるかを示すプログラムってできますか? 環境が提示されていないので絶対とは言えませんが、できると思います。 |