hosseinzadeh
پنج شنبه 23 مرداد 1382, 23:28 عصر
با سلام
این برنامه قرار است یک تاریخ را دریافت کند و معادل روز هفته آن را چاپ کند.مثلا 23/5/1382:چاپ کند Thu
سال مبدا 1376 گرفتم . سالهای بعد را درست حساب می کند اما در سالهای قبل از 1376 مشکل دارد و از چهار سال تقریبا 2 سال اشتباه می کند.به نظر شما باید چه کنم؟
اگر راه حل یا برنامه بهتری دارید ، لطفا بگویید.
با تشکر
[code][code]#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
int d,m,t,r,y,q,z,n,j,yy;
clrscr();
r=0;
t=0;
n=0;
scanf("%d %d %d",&d,&m,&y);
if (y>=1376) {
q=y-1376;
z=q/4;
for (j=1;j<=z;j++)
n+=2;
n+=(q-z);
d=d+n;
if (m==12) t=(((m*30)+5*31+m*29))+d;
if (m<=7) t=((m-1)*31)+d;
if (m>7) t=(((m*30)+6*31))+d;
t=t%7;
switch (t)
{
case 1:{printf("Fri");break;};
case 2:{printf("Sat");break;};
case 3:{printf("Sun");break;};
case 4:{printf("Mon");break;};
case 5:{printf("Tue");break;};
case 6:{printf("Wed");break;};
case 0:{printf("Thu5");break;};
default:printf("Unknown Error %d",t);
}
}
if (y<1376)
{
q=1376-y;
z=q/4;
for (j=1;j<=z;j++)
n-=2;
n-=(q-z);
d=d+n;
if (m==12) t=(((m*30)+5*31+m*29))+d;
if (m<=7) {d--;t=((m-1)*31)+d;}
if (m>7) {d--;t=(((m*30)+6*31))+d;}
t=t%7;
switch (t)
{
case 1:{printf("Fri");break;};
case 2:{printf("Sat");break;};
case 3:{printf("Sun");break;};
case 4:{printf("Mon");break;};
case 5:{printf("Tue");break;};
case 6:{printf("Wed");break;};
case 0:{printf("Thu5");break;};
default:printf("Unknown Error %d",t);
}}
getch();
return 0;
}[/code][/code]
این برنامه قرار است یک تاریخ را دریافت کند و معادل روز هفته آن را چاپ کند.مثلا 23/5/1382:چاپ کند Thu
سال مبدا 1376 گرفتم . سالهای بعد را درست حساب می کند اما در سالهای قبل از 1376 مشکل دارد و از چهار سال تقریبا 2 سال اشتباه می کند.به نظر شما باید چه کنم؟
اگر راه حل یا برنامه بهتری دارید ، لطفا بگویید.
با تشکر
[code][code]#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
int d,m,t,r,y,q,z,n,j,yy;
clrscr();
r=0;
t=0;
n=0;
scanf("%d %d %d",&d,&m,&y);
if (y>=1376) {
q=y-1376;
z=q/4;
for (j=1;j<=z;j++)
n+=2;
n+=(q-z);
d=d+n;
if (m==12) t=(((m*30)+5*31+m*29))+d;
if (m<=7) t=((m-1)*31)+d;
if (m>7) t=(((m*30)+6*31))+d;
t=t%7;
switch (t)
{
case 1:{printf("Fri");break;};
case 2:{printf("Sat");break;};
case 3:{printf("Sun");break;};
case 4:{printf("Mon");break;};
case 5:{printf("Tue");break;};
case 6:{printf("Wed");break;};
case 0:{printf("Thu5");break;};
default:printf("Unknown Error %d",t);
}
}
if (y<1376)
{
q=1376-y;
z=q/4;
for (j=1;j<=z;j++)
n-=2;
n-=(q-z);
d=d+n;
if (m==12) t=(((m*30)+5*31+m*29))+d;
if (m<=7) {d--;t=((m-1)*31)+d;}
if (m>7) {d--;t=(((m*30)+6*31))+d;}
t=t%7;
switch (t)
{
case 1:{printf("Fri");break;};
case 2:{printf("Sat");break;};
case 3:{printf("Sun");break;};
case 4:{printf("Mon");break;};
case 5:{printf("Tue");break;};
case 6:{printf("Wed");break;};
case 0:{printf("Thu5");break;};
default:printf("Unknown Error %d",t);
}}
getch();
return 0;
}[/code][/code]