واضح آرشیو وب فارسی:سایت ریسک: aliexo06-01-2010, 09:50 AMمن یه پروژه دارم که این شکلیه : برنامه ای بنویسید که یک سال شمسی را گرفته و تقویم آنرا چاپ کند حالا من دنباله الگوریتمشم . یعنی کلا چجوری می تونم بفهم که مثلا یک روز مثله 22 بهمن چند شنبه هستش؟ کلا چیزایی که لازمه چیه؟ _H2_10-01-2010, 01:08 PMسلام حتماً میدانید که تقویم ایرانی موسوم به جلالی است. ((( متاسفانه من در کتابها برای جلالی یک الگوریتم و در اینترنت یک الگوریتم دیگر دیده ام ولی هر دو الگوریتم خیلی کامل هستند و تا سال 140X جواب یکسانی میدهند. بحرحال من روی الگوریتم ساده تر را که در اینترنت خواهید یافت و تقویم شمسی داخلی Microsoft .Net Framework هم بر همان اسا کار میکند، را توضیح کوتاهی خواهم داد ))) متاسفانه اگر در اینترنت جستجو کنید کدهای زیادی برای تقویم شمسی خواهید یافت که معمولاً سرشار از If و Select یا Switch هستند و مدام اعداد 20 و 21 و 22 در انها تکرار شده !!!! کل این الگوریتم و روش ها از اول و تا اخر اشتباه محضو هستند! و فقط در یک بازه 4 یا حداکثر 5 ساله صحیح کار خواهند کرد. این کدها و الگوریتم ها مطلقاً فاقد ارزش علمی و کاری عملی هستند. در محاسبات تقویم در نظر گرفتن سالهای کبیسه خیلی خیلی مهم است. ما هر 4 سال یک کبیسه داریم که سال 366 روز میشود و هر 33 سال یک کبیسه 5 ساله داریم که یعنی سال 32 دوم باید کبیسه باشد ولی سال 33 کبیسه میشود و تا کبیسه قبلی 5 سال فاصله می افتد. شما برای محاسبه و تاریخ و تبدیل و... در برنامه نویسی ... روش صحیح ان است که هر تاریخی به تعداد روز خالص گذشته از اول هجرت یا اول میلاد حضرت مسیح (ص) تبدیل کنید. یعنی یک کد کوچک که روز سال را به تعداد روز سال تبدیل میکند و یک کد دیگر که سر سال را به تعداد روز تبدیل میکند. (سال * 365 + تعداد کل کبیسه های رخ داده) در نهایت بعد از جمع و تبدیل تاریخ به تعداد روز گذشته از اول هجرت با یک دستور باقیمانده میتوانید روز هفته (چند شنبه) را محاسبه کنید و با تبدیل تعداد روز به تاریخ میلادی میتوانید تبدیل به میلادی را هم انجام دهید. aliexo10-01-2010, 11:14 PMخیلی ممنون , خب مشکل من اینه که 0/0/0 رو شنبه بگیرم یا نه ؟ حالا یه چیز دیگه , خوده شما این برنامه رو داری به زبان c یا c++ ؟ اگه داری به من میل کن چون بدجور لازم دارم و باید روش کار کنم و با 5 تا پروژه دیگه تحویل استاد بدم تا 1 هفته دیگه اینم email : [email protected] _H2_12-01-2010, 03:42 PMسلام تاریخ 0/0/0 برای مبنای محاسبه بودن کمی ایهام دارد و شاید آدم را منحرف کند. بهتر است 1/1/1 را تاریخ مبنای محاسبه قرار دهید. این تاریخ ایهام کمتری دارد! ضمن اینکه مهم یک تاریخ ثابت برای مبنا است و مقدارش مهم نیست! ============== اگر تاریخ 1/1/1 مبنا باشد این تاریخ پنجشنبه بوده. اولین کبیسه 5 ساله (پایان یک دوره 33 ساله) در سال 22 هجری بوده و اخرین کبیسه 5 ساله تا حالا در تاریخ 1375 بوده. ((( یعنی سال 1370 کبیسه عادی بوده و چون در پایان دوره 33 ساله بودیم بجای 1374 سال 1375 کبیسه شده. همینطور سال 17 شمسی کبیسه عادی بوده و به جای سال 21 سال 22 اولین کبیسه 5 ساله بعد از هجرت روی داده. ))) یعنی با خود سال 22 شش بار کبیسه رخ داده (1,5,9,13,17,22) از سال 22 تا خود سال 1375 جمعاً 328 کبیسه رخ داده! !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! از سال 1375 تا سال 1388 هم باز سه کبیسه رخ داده (1379,1383,1387) پس در اول روز عید 1388 چند روز از تاریخ مبنا گذشته؟ !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! یعنی 506592 روز گذشته! عدد 1 همان سال مبنا است و عدد 3و6و328هم کبیسه های رخ داده هستند که هر کدام یک روز به سال و زمان اضافه کرده بودند! حل است؟ ============== مثلاً امروز 22 دیماه 1388 ... 298 امین روز سال جاری است. ((( امین! یعنی خودش هم حساب است در واقع 297 روز اول اول عید گذشته با خود روزی که در ان هستیم میشود 298 امین روز سال ))) و اول فروردین 1388 برابر 506592 روز از تاریخ مبنا سپری شده گذشته. ((( در واقع آخرین روز اسفند 1387 برابر 506592 امین روز هجرت بوده. و خود روز عید 506593 امین روز هجرت بوده. ))) در نهایت تاریخ 22 دیماه 1388 در کل 506592+298 امین روز برابر 506890 امین روز هجرت است. ============== حالا امروز چند شنبه و چندمین روز هفته است؟ !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! days برابر تاریخ گذشته از روز مبنا با خود روز مبنا و خود روزی که در آن هستیم میباشد. ((( عدد 5 به خاطر روزهفته در تاریخ مبنا است و عدد 1 به خاطر ان است که خود روزمبنا را هم در شمارش لحاظ کرده بودیم. ))) !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! موفق باشید. aliexo12-01-2010, 10:34 PMخیلی عالی بود , کارت بیسته :10: :5: :31: :11: _H2_13-01-2010, 02:10 PMسلام دو مطلب دیگر ... 1) حتما دقت کنید که کبیسه بودن سالی که در ان هستیم مهم نیست و نباید محاسبه شود. یعنی اگر به فرض سال 1388 کبیسه هم میبود باز جواب فوق فرقی نمیکرد. چون قرار است آخر سال کبیسه یک روز اضافه شود و طبیعتاً تاثیری در محاسبه تاریخ های داخل همان سال ندارد. پس حتماً تعداد کبیسه ها از سال 1 تا یکسال قبل سالی که میخواهید محاسبه کنید. 2) یک نمونه برنامه که بر اساس همین الگوریتم کار میکند را میتوانید در زیر دانلود کنید. exe پروزه در مسیر دایرکتوری bin قرار دارد و در Vista و Win7 چیزخاصی برای اجرا نمیخواهد ولی در سیستم عامل قدیمی تر XP باید Framework2.0 روی سیستم نصب باشد تا exe کار کند. میتوانید از این برنامه کوچک و ساده برای تست کارتان و صحت کدی که نوشته اید استفاده کنید. support.h02.ir/fwlink/?LinkId=1002125877 !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! hasti_tv05-05-2010, 02:17 AMسلام من دنبال الگوریتم تقویم شمسی میگردم ،میخوام واسسه هر روز داشته باشم که چند شنبس،و تاریخ اون به میلادی و قمری چی میشه!!! کسی میتونه به من کمک کنه !خواهش میکنم باید برنامشو این هفته تحویل بدم:41::11: _H2_09-05-2010, 02:21 AMسلام من دنبال الگوریتم تقویم شمسی میگردم ،میخوام واسسه هر روز داشته باشم که چند شنبس،و تاریخ اون به میلادی و قمری چی میشه!!! کسی میتونه به من کمک کنه !خواهش میکنم باید برنامشو این هفته تحویل بدم گمانم برای روز هفته توضیحات قبلی کامل و کافی ب.ده .... نمیدانم چه باید به آن اضافه کنم برای تبدیل به/از میلادی هم فرق خاصی ندارد ... مهم محاسبه تعداد روز گذشته از اول سال مبنا است، همان عدد 506890 در توضیحات قبلی ... این عدد که محاسبه شد منهای اختلاف تعداد روز در سال مبنا بین تاریخ میلادی و شمسی میشود و تعداد روز گذشته از اول مبنای میلادی (میلاد حضرت مسیح) به دست می آید. بعد هم کافی است تعداد روز گذشته از میلاد را تبدیل به تاریخ کنید که خیلی مشابه روند شمسی است و فقط در کبیسه هایشان تفاوت دارد که روند کبیسه های میلادی هم اینچنین است که هر 4 سال یک کبیسه دارند و هر 100 سال یک کبیسه 4 ساله را نمیگیرند (یعنی کبیسه شان 8 ساله میشود) و هر 400 سال مجدد کبیسه را دارند. ===== اگر توضیح خواستید باز در خدمت هستم ولی اگر منظورتان از کمک، گذاشتن کد باشد شرمنده تان میشوم ... موفق باشید. سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 4061]