/* バイオリズムのプログラム */ #include #include #define PI 3.1415926535 main() { int BYear,BMonth,BDay,FYear,FMonth,FDay,leap; int monthday[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int day,day1,day2,day3; int CDay1,CDay2,CDay3; double x1,y1,x2,y2,x3,y3; int i; /* 周期 */ CDay1=23; CDay2=28; CDay3=33; printf("誕生日(入力例: 2001 12 5):"); scanf("%d%d%d",&BYear,&BMonth,&BDay); printf("占い日(入力例: 2006 10 4):"); scanf("%d%d%d",&FYear,&FMonth,&FDay); printf("\n"); /* @ */ day1 = 0; if( (!(BYear%4)&&(BYear%100))||!(BYear%400) ) leap=1; else leap=0; for(i=1;i<=BMonth-1;i++){ day1 += monthday[i]; if(i==2) day1 += leap; } day1 += BDay; printf("day1=%d\n",day1); /* A */ day2 = 0; for(i=BYear;i<=FYear-1;i++){ day2 += 365; if( (!(i%4)&&(i%100))||!(i%400) ) leap=1; else leap=0; day2 += leap; } printf("day2=%d\n",day2); /* B */ day3 = 0; if( (!(FYear%4)&&(FYear%100))||!(FYear%400) ) leap=1; else leap=0; for(i=1;i<=FMonth-1;i++){ day3 += monthday[i]; if(i==2) day3 += leap; } day3 += FDay; printf("day3=%d\n",day3); /* 経過日 */ day = day2 + day3 - day1; printf("\n誕生日からの経過日(day) = %d\n\n",day); /* バイオリズムの計算 */ printf(" , 身体, 感情, 知性\n"); for(i=-7;i<=7;i++){ x1 = (double)(day+i)/CDay1*2.0*PI; y1 = sin(x1); x2 = (double)(day+i)/CDay2*2.0*PI; y2 = sin(x2); x3 = (double)(day+i)/CDay3*2.0*PI; y3 = sin(x3); printf("%2d,%6.3lf,%6.3lf,%6.3lf\n",i,y1,y2,y3); } }