تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 17

نام تاپيک: چجوری می تونم یک تقویم شمسی بسازم ؟

  1. #1
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2009
    پست ها
    17

    14 چجوری می تونم یک تقویم شمسی بسازم ؟

    من یه پروژه دارم که این شکلیه :
    برنامه ای بنویسید که یک سال شمسی را گرفته و تقویم آنرا چاپ کند

    حالا من دنباله الگوریتمشم . یعنی کلا چجوری می تونم بفهم که مثلا یک روز مثله 22 بهمن چند شنبه هستش؟
    کلا چیزایی که لازمه چیه؟

  2. این کاربر از aliexo بخاطر این مطلب مفید تشکر کرده است


  3. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    حتماً میدانید که تقویم ایرانی موسوم به جلالی است.
    (((
    متاسفانه من در کتابها برای جلالی یک الگوریتم و در اینترنت یک الگوریتم دیگر دیده ام ولی هر دو الگوریتم خیلی کامل هستند و تا سال 140X جواب یکسانی میدهند.
    بحرحال من روی الگوریتم ساده تر را که در اینترنت خواهید یافت و تقویم شمسی داخلی Microsoft .Net Framework هم بر همان اسا کار میکند، را توضیح کوتاهی خواهم داد
    )))

    متاسفانه اگر در اینترنت جستجو کنید کدهای زیادی برای تقویم شمسی خواهید یافت که معمولاً سرشار از If و Select یا Switch هستند و مدام اعداد 20 و 21 و 22 در انها تکرار شده !!!!
    کل این الگوریتم و روش ها از اول و تا اخر اشتباه محضو هستند! و فقط در یک بازه 4 یا حداکثر 5 ساله صحیح کار خواهند کرد.
    این کدها و الگوریتم ها مطلقاً فاقد ارزش علمی و کاری عملی هستند.

    در محاسبات تقویم در نظر گرفتن سالهای کبیسه خیلی خیلی مهم است.
    ما هر 4 سال یک کبیسه داریم که سال 366 روز میشود و هر 33 سال یک کبیسه 5 ساله داریم که یعنی سال 32 دوم باید کبیسه باشد ولی سال 33 کبیسه میشود و تا کبیسه قبلی 5 سال فاصله می افتد.

    شما برای محاسبه و تاریخ و تبدیل و... در برنامه نویسی ... روش صحیح ان است که هر تاریخی به تعداد روز خالص گذشته از اول هجرت یا اول میلاد حضرت مسیح (ص) تبدیل کنید.

    یعنی یک کد کوچک که روز سال را به تعداد روز سال تبدیل میکند
    و
    یک کد دیگر که سر سال را به تعداد روز تبدیل میکند.
    (سال * 365 + تعداد کل کبیسه های رخ داده)

    در نهایت بعد از جمع و تبدیل تاریخ به تعداد روز گذشته از اول هجرت با یک دستور باقیمانده میتوانید روز هفته (چند شنبه) را محاسبه کنید و با تبدیل تعداد روز به تاریخ میلادی میتوانید تبدیل به میلادی را هم انجام دهید.

  4. 4 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


  5. #3
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2009
    پست ها
    17

    11

    خیلی ممنون , خب مشکل من اینه که 0/0/0 رو شنبه بگیرم یا نه ؟
    حالا یه چیز دیگه , خوده شما این برنامه رو داری به زبان c یا c++ ؟
    اگه داری به من میل کن چون بدجور لازم دارم و باید روش کار کنم و با 5 تا پروژه دیگه تحویل استاد بدم تا 1 هفته دیگه
    اینم email :

    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

  6. این کاربر از aliexo بخاطر این مطلب مفید تشکر کرده است


  7. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    تاریخ 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 به خاطر ان است که خود روزمبنا را هم در شمارش لحاظ کرده بودیم.
    )))

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    موفق باشید.

  8. 5 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


  9. #5
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2009
    پست ها
    17

    13

    خیلی عالی بود , کارت بیسته

  10. این کاربر از aliexo بخاطر این مطلب مفید تشکر کرده است


  11. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    دو مطلب دیگر ...
    1)
    حتما دقت کنید که کبیسه بودن سالی که در ان هستیم مهم نیست و نباید محاسبه شود.
    یعنی اگر به فرض سال 1388 کبیسه هم میبود باز جواب فوق فرقی نمیکرد.
    چون قرار است آخر سال کبیسه یک روز اضافه شود و طبیعتاً تاثیری در محاسبه تاریخ های داخل همان سال ندارد.
    پس حتماً تعداد کبیسه ها از سال 1 تا یکسال قبل سالی که میخواهید محاسبه کنید.

    2)
    یک نمونه برنامه که بر اساس همین الگوریتم کار میکند را میتوانید در زیر دانلود کنید.
    exe پروزه در مسیر دایرکتوری bin قرار دارد و در Vista و Win7 چیزخاصی برای اجرا نمیخواهد ولی در سیستم عامل قدیمی تر XP باید Framework2.0 روی سیستم نصب باشد تا exe کار کند.

    میتوانید از این برنامه کوچک و ساده برای تست کارتان و صحت کدی که نوشته اید استفاده کنید.
    support.h02.ir/fwlink/?LinkId=1002125877
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  12. 2 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


  13. #7
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2010
    پست ها
    1

    پيش فرض

    سلام
    من دنبال الگوریتم تقویم شمسی میگردم ،میخوام واسسه هر روز داشته باشم که چند شنبس،و تاریخ اون به میلادی و قمری چی میشه!!! کسی میتونه به من کمک کنه !خواهش میکنم باید برنامشو این هفته تحویل بدم

  14. #8
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    من دنبال الگوریتم تقویم شمسی میگردم ،میخوام واسسه هر روز داشته باشم که چند شنبس،و تاریخ اون به میلادی و قمری چی میشه!!! کسی میتونه به من کمک کنه !خواهش میکنم باید برنامشو این هفته تحویل بدم
    گمانم برای روز هفته توضیحات قبلی کامل و کافی ب.ده ....
    نمیدانم چه باید به آن اضافه کنم

    برای تبدیل به/از میلادی هم فرق خاصی ندارد ...
    مهم محاسبه تعداد روز گذشته از اول سال مبنا است، همان عدد 506890 در توضیحات قبلی ...

    این عدد که محاسبه شد منهای اختلاف تعداد روز در سال مبنا بین تاریخ میلادی و شمسی میشود و تعداد روز گذشته از اول مبنای میلادی (میلاد حضرت مسیح) به دست می آید.
    بعد هم کافی است تعداد روز گذشته از میلاد را تبدیل به تاریخ کنید که خیلی مشابه روند شمسی است و فقط در کبیسه هایشان تفاوت دارد که روند کبیسه های میلادی هم اینچنین است که هر 4 سال یک کبیسه دارند و هر 100 سال یک کبیسه 4 ساله را نمیگیرند (یعنی کبیسه شان 8 ساله میشود) و هر 400 سال مجدد کبیسه را دارند.

    =====

    اگر توضیح خواستید باز در خدمت هستم ولی اگر منظورتان از کمک، گذاشتن کد باشد شرمنده تان میشوم ...
    موفق باشید.

  15. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  16. #9
    در آغاز فعالیت
    تاريخ عضويت
    May 2013
    پست ها
    4

    پيش فرض

    سلام من الان ی سوال برام \یش اومد.
    الان اینجا اگه ی روزی در سالهای قبلی ۱۳۷۵ را بخواهیم چطوری محاسبه میشود؟
    ممنون میشم چواب بدین

  17. #10
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    فرقی ندارد، توضیحات کلی بود
    مشکل شما فقط فرمول خط اول است؟!
    بفرمائید این هم فرمول جایگزین بدون دانستن سال 1375 !
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

برچسب های این موضوع

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •