PDA

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



alireza.pir
جمعه 26 آبان 1391, 13:14 عصر
سلام دوستان عزیز. من در حال نوشتن یک برنامه هستم که باید سک تاریخ میلادی رو بگیره و بگه که چند شنبه بوده.

فرمول این محاسبات اینطوری هستش:

http://www.udk.ir/upload/download.php?img=541

كه در اون


قرن=C

Y=سال خاص آن قرن K=روز ماه


m هم اینطوری حساب میشه:




آوریل=2



11=ژانويه



12=فوريه



ژوين=4



ژوييه=5



اوت=6



سپتامبر=7



اكتبر=8



نوامبر=9



دسامبر=10


و مقداری که برای W میاد برابر با روز هفتست. به طوری که:







W

0 يك شنبه

1 دوشنبه

2 سه شنبه

3 چهارشنبه

4 پنج شنبه

5 جمعه

6 شنبه

مثلا برای روز 22 از ماه 10 (اکتبر) سال 2012
c=20
k=22
y=12
m=8




خوب. این فرمول برای خیلی از روز ها جواب میده. اما مثلا برای تاریخ 8/6/2012 (8 ژوين 2012) یک عدد منفی میده بیرون...! میشه منو راهنمایی کنید؟ این فرمول مشکلی داره؟ من در محاسبات اشتباه میکنم؟

لطفا راهنمایی کنید چون باید پروژه رو فردا تحویل بدم...! :لبخند:

omidshaman
جمعه 26 آبان 1391, 14:42 عصر
این الان سوال ریاضیه یا برنامه نویسی ?
خوب اره دیگه احتمالا مشکل داره فرمولت اگر اونی که گفتی رو بزاری منفی میشه! شاید باید مقداری که بدست میاد اگر منفی بود از 6 کم کنی؟(اگر این کارو بکنی فکر کنم برای اون چیزی که گفتی درست در میاد)
بعد این فرمولو از جایی پیدا کردی یا خودت نوشتی؟

shahmohammadi
جمعه 26 آبان 1391, 15:40 عصر
سلام.
توي اين مساله مي تونيد يك تاريخ رو كه چند شنبه بودنش رو مي‌دونيد به عنوان تاريخ پايه در نظر بگيريد. بعد تاريخ درخواستي رو از كاربر بگيريد و از تاريخ پايه روز به روز به سمت اون تاريخ درخواستي حركت كنيد. در هر قدم كه تاريخ مي آد جلو مي تونيد روز هفته رو هم يك روز تغيير بديد. در آخر تاريخ به اون روز مد نظر رسيده و چند شنبه بودنش هم معلوم هست.
مي تونيد يك كلاس براي تاريخ تعريف كنيد و عملگر ++ و -- و > < رو براش سربارگذاري كنيد. و يا سه تابع براي مقايسه و افزايش و كاهش اون بنويسيد.
من اين روش رو براي تبديل تاريخ ها به هم استفاه ده كردم و دقيق تر از همه است. اگه درست بنويسيد هيچ روزي رو غلط نمي گه.

در آخر يك تقويم سررسيد در مورد تبديل تاريخ ها به هم نوشته بود و گفته بود كه هميشه مثلا فلان روز تاريخ ميلادي برابر با فلان روز تاريخ شمسي است و فلان شنبه است. ولي روز شمار خود اون تقويم با اين موضوع مطابقت نداشت. اين فرمول ها هميشه مشكل دارند. بهترين و دقيق ترين راه همين پيمايش روز به روز هست.