PDA

View Full Version : معادل روز هفته یک تاریخ



hosseinzadeh
پنج شنبه 23 مرداد 1382, 22: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]

Mohammad_Mnt
پنج شنبه 23 مرداد 1382, 23:40 عصر
اصلا احتیاجی نیست که خودت برنامه رو بنویسی ! این تابع توی خود سی وجود داره ( شرمنده تمام مطالب سی یادم رفته ) . اگه هم روز مربوط به یه تاریخ رو می خوای ، اون روز رو به تاریخ میلادی تبدیل کن و بعد از همون تابع خود زبان سی استفاده کن .

hosseinzadeh
جمعه 24 مرداد 1382, 11:44 صبح
با سلام
آقای منتظرالظهور،
این برنامه را باید به عنوان پروژه تحویل دهم.بنابراین نمی توانم از توابع استفاده کنم.فقط هم تا روز یکشنبه وقت دارم.

Pars Giga
یک شنبه 15 خرداد 1384, 13:23 عصر
سال کبیسه را حساب کردی ؟