آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کبیسه گیری در تاریخ جلالی (آموزش)

سهرابیان  8 سال پیش  8 سال پیش
+5 0

الگوریتم کبیسه گیری در تاریخ جلالی ( شمسی ) :

 

الف ) الگوریتم اول با دقت اندازه گیری بالاتر نسبت به الگوریتم دوم  : 

این الگوریتم توسط FSR@ نوشته شده است . برای استفاده از این الگوریتم می توانید به لینک روبرو مراجعه کنید که در سرویس پاسخ اندروید وجود دارد : لینک الگوریتم اول 

 

ب ) الگوریتم دوم با دقت اندازه گیری پایین :

در پست قبلی ، الگوریتم تبدیل تاریخ میلادی به شمسی ( لینک ) را قرار دادم اما با استفاده از این Methodــی که در این پست قرار می دهم می توانیم سال کبیسه شمسی را نیز بدست آوریم . 

مقدمه : 

سال کبیسه در تاریخ جلالی ( شمسی ) از سال 1305 هر 4 سال یکبار اتقاق می افتد با این تفاوت که بعد از گذراندن هر 8 دوره ی 4 ساله ( 32 سال ) به جای 4 سال ، 5 سال محاسبه می شود . برای اینکه این گفتار قابل درک باشد به نمونه ی زیر توجه کنید :

1305 ، 1309 ، 1313 ، 1317 ، 1321 ، 1325 ، 1329 ، 1333 ، 1337 ، 1342 ، 1346 ، 1350 ، 1354 ، 1358 ، 1362 ، 1366 ، 1370 ، 1375 ، 1379 ، 1383 ، 1387 ، 1391 ، 1395

راهنما : 

1- باتوجه به توضیحات بالا باید متغییری برای شروع سال کبیسه در نظر گرفته شود . 

2- همانطور که گفتم ، بعد از گذراندن هر 8 دوره ی 4 ساله باید به جای 4 سال ، 5 سال در نظر گرفته شود . بنابراین باید متغییر ی برای شمارش دوره ها در نظر گرفته شود تا بعد از گذراندن 8 دوره  به جای 4 سال ، 5 سال را محاسبه کند . شرط ادامه ی حلقه باید به اینصورت باشد که تا 4 سال قبل از خودش ادامه داشته باشد . 

3- اگر مقدار بدست آمده با مقدار ورودی برابر بود سال کبیسه است در غیر اینصورت سال کبیسه نیست . 

سورس کد آن به شرح زیر می باشد : 

 
 
 internal func DetectionOfTheSolarLeapYear ( solaryear:Int )-> Bool {
        
        /* 
            a: defition of a variable for a period of eight year
            b: defition of a variable for leap year
            c: defition of a variable for variables user input year
        */
        
        var a:Int = 0
        var b:Int = 1305
        let c:Int = solaryear
        
        for var i = 1305 ; i <= c-4  ; i+=4 {
            
            // add a period of leap yaer
            b+=4
            
            // add one period for survey a period of eight years
            a+=1
            if a%8 == 0{
                b++
            }
        }
        
        // if achieved year was Equal with user input year , So user input year is a leap year
        if c == b {
            return true
        }else{
            return false
        }
        
    }
 

 

+3 0
نقل قول : پیدا کردن کد در اینترنت و فقط Past کردن آن در یک پروژه واقعی مثل جویدن آدامسی است که از روی زمین پیدا کرده اید ! . بنابراین تنها حقی که به گردن خودتان دارید الگوریتم هایی که به این شکل پیدا می کنید را حداقل حداقل یکبار برای خود تشریح کنید و تحلیل کنید که چه طرز تفکری پشت آن بوده است تا به تجربه ی خود در الگوریتم نویسی اضافه کنید . موفق باشید (8 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .