[雑談]13日の金曜日の出し方について
Posted: 2010年7月13日(火) 21:55
13日の金曜日が不吉かどうかは定かではありませんが、
これの計算方法について雑談でもしませんか?
さっそく興味があったので、プログラミングしました。
しかし、少し計算にずれがあったみたいです。
なぜでしょうか!?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int NextYoubi(int youbi)
{
youbi++;
return youbi%7;
}
void Get13thFriday(int Year,int Month,int Day,char youbi[/url])
{
int i,j,k=0;
enum d{SUN,MON,TUE,WED,THU,FRI,SAT};
char y[7][5]={"SUN","MON","TUE","WED","THU","FRI","SAT"};
int DaysTbl[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int day=Day,year=Year,Youbi;
int firstday=0;
for(i=0;i<7;i++)
{
if(strcmp(youbi,y)==0)
{
Youbi=i;
}
}
i=Month;
while(year<2999)
{
if(year%4==0 && i==1)
{
DaysTbl[1]=29;
}
if(DaysTbl<=day)
{
i++;
if(i>11) year++;
DaysTbl[1]=28;
day=1;
Youbi=NextYoubi(Youbi);
i=i%12;
firstday=Youbi;
}
if((day==13 && Youbi==5) && firstday==0)
{
static int cnt=0;
printf("次の13日の金曜日は、%d年%d月%d日です。\n",year,i,day);
cnt++;
if(cnt>5)
break;
}
day++;
Youbi=NextYoubi(Youbi);
}
}
int main()
{
int y,m,d;
char youbi[100];
printf("今日は西暦何年何月何日ですか?->");
scanf("%d,%d,%d",&y,&m,&d);
printf("今日は何曜日ですか?(SUN,MON,TUE,WED,THU,FRI,SAT)で答えて下さい。\n");
scanf("%s",youbi);
Get13thFriday(y,m,d,youbi);
return 0;
}
これの計算方法について雑談でもしませんか?
さっそく興味があったので、プログラミングしました。
しかし、少し計算にずれがあったみたいです。
なぜでしょうか!?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int NextYoubi(int youbi)
{
youbi++;
return youbi%7;
}
void Get13thFriday(int Year,int Month,int Day,char youbi[/url])
{
int i,j,k=0;
enum d{SUN,MON,TUE,WED,THU,FRI,SAT};
char y[7][5]={"SUN","MON","TUE","WED","THU","FRI","SAT"};
int DaysTbl[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int day=Day,year=Year,Youbi;
int firstday=0;
for(i=0;i<7;i++)
{
if(strcmp(youbi,y)==0)
{
Youbi=i;
}
}
i=Month;
while(year<2999)
{
if(year%4==0 && i==1)
{
DaysTbl[1]=29;
}
if(DaysTbl<=day)
{
i++;
if(i>11) year++;
DaysTbl[1]=28;
day=1;
Youbi=NextYoubi(Youbi);
i=i%12;
firstday=Youbi;
}
if((day==13 && Youbi==5) && firstday==0)
{
static int cnt=0;
printf("次の13日の金曜日は、%d年%d月%d日です。\n",year,i,day);
cnt++;
if(cnt>5)
break;
}
day++;
Youbi=NextYoubi(Youbi);
}
}
int main()
{
int y,m,d;
char youbi[100];
printf("今日は西暦何年何月何日ですか?->");
scanf("%d,%d,%d",&y,&m,&d);
printf("今日は何曜日ですか?(SUN,MON,TUE,WED,THU,FRI,SAT)で答えて下さい。\n");
scanf("%s",youbi);
Get13thFriday(y,m,d,youbi);
return 0;
}