امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
برنامه اي مي خواهم به زبان c سال ميلادي را به شمسي تبديل
نویسنده پیام
sadaf_mybb1.2_import14683 آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 1
تاریخ عضویت: بهمن ۱۳۸۶

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
برنامه اي مي خواهم به زبان c سال ميلادي را به شمسي تبديل
سلام اين برنامه را مي خوام ودرست اجرا شود
۱۵-بهمن-۱۳۸۶, ۱۸:۱۵:۰۲
ارسال‌ها
پاسخ
seyedmostafa_mybb1.2_import14469 آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 0
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #2
 
تا چند روز دیگه برنامه تبدیل تاریخ میلادی به شمسی به زبان C و اسمبلی AVR رو تو همین سایت می زارم منتظر باش Biggrin
۱۸-بهمن-۱۳۸۶, ۲۱:۱۰:۴۶
ارسال‌ها
پاسخ
Leon_mybb1.2_import14274 آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: آبان ۱۳۸۶

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #3
 
با سلام
برنامه تبدیل تاریخ از کتاب آقای ره افروز تقدیم میشود
Amaze
flash unsigned char shmtable[6][12]={
{11,10,10,9,9,9,8,9,9,10,11,9},
{20,20,21,21,22,22,22,22,21,21,20,19},
{11,10,10,9,9,9,8,9,9,10,11,10},
{20,20,21,21,22,22,22,22,21,21,20,19},
{12,11,11,10,10,10,9,10,10,11,12,10},
{19,19,20,20,21,21,21,21,20,20,19,18}};

flash unsigned char miltable[6][12]={
{20,19,19,19,20,20,21,21,21,21,20,20},
{10,11,10,12,11,11,10,10,10,9,10,10},
{19,18,20,20,21,21,22,22,22,22,21,21},
{11,12,10,11,10,10,9,9,9,8,9,9},
{20,19,20,20,21,21,22,22,22,22,21,21},
{10,11,9,11,10,10,9,9,9,8,9,9}};

struct date{
unsigned char day;
unsigned char month;
unsigned char year;
};
struct date shmdate,mildate ;
/*************************************************************************/
void miltoshmcv(unsigned char ym,unsigned char mm,unsigned char dm)
{
unsigned char k,t1,t2;
k=ym%4;
if(k==3)
k=2;
k*=2;
t1=miltable[k][mm-1];
t2=miltable[k+1][mm-1];
if(mm<3 || (mm==3 && dm<=miltable[k][mm-1]))
shmdate.year = ym + 78;
else
shmdate.year = ym + 79;

if(dm<=t1)
{
shmdate.day=dm+t2;
shmdate.month=(mm+8)%12+1;
}
else
{
shmdate.day=dm-t1;
shmdate.month=(mm+9)%12+1;
}
}
/**********************************************************************/
void shmtomilcv(unsigned char ys ,unsigned char ms,unsigned char ds)
{
unsigned char k,t1,t2;
k = ys%4;
if( k == 0)
k = 2;
else
k = k + k;
t1 =shmtable[k - 2][ms-1];
t2 = shmtable[k-1][ms-1];
if(ms<10 || (ms==10 && ds <= shmtable[k-2][ms-1]))
mildate.year = ys - 79;
else
mildate.year = ys - 78;

if(ds <= t1)
{
mildate.day = ds + t2;
mildate.month = (ms + 1)%12 + 1;
}
else
{
mildate.day= ds - t1;
mildate.month= (ms + 2)%12 + 1;
}
}
۲۷-بهمن-۱۳۸۶, ۰۴:۲۸:۰۸
ارسال‌ها
پاسخ
Leon_mybb1.2_import14274 آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: آبان ۱۳۸۶

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #4
 
دوباره سلام
اینم یه برنامه دیگه Amaze

منبع
http://radcom.ir/weblog/fatemeh/archive/...7/244.aspx


کد:
typedef struct _SHAMSIDATE
{
int iYear;
int iMonth;
int iDay;
}SHAMSIDATE;


SHAMSIDATE MiladiToShamsi(int iMiladiMonth,int iMiladiDay,int iMiladiYear)
{


int shamsiDay, shamsiMonth, shamsiYear;
int dayCount,farvardinDayDiff,deyDayDiff ;
int sumDayMiladiMonth[] = {0,31,59,90,120,151,181,212,243,273,304,334};
int sumDayMiladiMonthLeap[]= {0,31,60,91,121,152,182,213,244,274,305,335};
SHAMSIDATE shamsidate;


farvardinDayDiff=79;


if (MiladiIsLeap(iMiladiYear))
{
dayCount = sumDayMiladiMonthLeap[iMiladiMonth-1] + iMiladiDay;
}
else
{
dayCount = sumDayMiladiMonth[iMiladiMonth-1] + iMiladiDay;
}
if((MiladiIsLeap(iMiladiYear - 1)))
{
deyDayDiff = 11;
}
else
{
deyDayDiff = 10;
}
if (dayCount > farvardinDayDiff)
{
dayCount = dayCount - farvardinDayDiff;
if (dayCount <= 186)
{
switch (dayCount%31)
{
case 0:
shamsiMonth = dayCount / 31;
shamsiDay = 31;
break;
default:
shamsiMonth = (dayCount / 31) + 1;
shamsiDay = (dayCount%31);
break;
}
shamsiYear = iMiladiYear - 621;
}
else
{
dayCount = dayCount - 186;
switch (dayCount%30)
{
case 0:
shamsiMonth = (dayCount / 30) + 6;
shamsiDay = 30;
break;
default:
shamsiMonth = (dayCount / 30) + 7;
shamsiDay = (dayCount%30);
break;
}
shamsiYear = iMiladiYear - 621;
}
}
else
{
dayCount = dayCount + deyDayDiff;


switch (dayCount%30)
{
case 0 :
shamsiMonth = (dayCount / 30) + 9;
shamsiDay = 30;
break;
default:
shamsiMonth = (dayCount / 30) + 10;
shamsiDay = (dayCount%30);
break;
}
shamsiYear = iMiladiYear - 622;


}
shamsidate.iYear = shamsiYear;
shamsidate.iMonth = shamsiMonth;
shamsidate.iDay = shamsiDay;


return shamsidate ;
}


// the function check a miladiyear is leap or not.
BOOL MiladiIsLeap(int miladiYear)
{
if(((miladiYear % 100)!= 0 && (miladiYear % 4) == 0) || ((miladiYear % 100)== 0 && (miladiYear % 400) == 0))
return TRUE;
else
return FALSE;
}
۲۷-بهمن-۱۳۸۶, ۰۴:۳۰:۵۲
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #5
 
ممنون :wink:

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۲۷-بهمن-۱۳۸۶, ۰۹:۱۳:۲۱
وب سایت ارسال‌ها
پاسخ
seyedmostafa_mybb1.2_import14469 آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 0
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #6
 
این هم یک برنامه تبدیل تاریخ میلادی به شمسی به زبان C
مقادیر تاریخ میلادی را در متغیر های year,month,day گذاشته و تاریخ شمسی را در همان مکانها بخوانید.
کد:
/////////////////////////////////////////////////////////////////////////////////////
[size=18]//;{flash unsigned char mon[]={0,10,11,9,11,10,10,9,9,9,8,9,9
//;unsigned char year,month,day
//////////////////For Example :2008/02/08 --->1386/11/19 /////////////////
// ;year=8
// ;month=2
// ;day=8
//////////////////////////////////////////////////////////////////////////////////
if(year%4==0 & month>2)day++; //miladi leap year: increase day
if(year%4==1 && month==3 && day==20){day=30;month=12;goto yearcal;} // shamsi leap year
if(year%4==1 && (month<3 || (month==3 && day<20)))day++; // miladi leap year remain: increase day
day=day+mon[month]; //calculate shmsi day
month=month+9; //calculate shamsi month
if (month>12)month=month-12; //adjust month
if(month<7){if(day>31){day=day-31;month++;}} //adjust shamsi day with related month
// {{;++if(month<12){if(day>30){day=day-30;month
// {{;if(month==12){if(day>29){day=day-29;month=1
                                                                      :yearcal
year=year+79; //calculate shamsi year
// ;if(year >= 100)year=year-100
if(year%4==3){if(month>10 || (month==10 && day>11 )) year--;} //adjust shmasi year
{{;--else {if(month>10 || (month==10 && day>10 )) year  
                  [/size][size=18][/size][size=12][/size]
۲۷-بهمن-۱۳۸۶, ۲۰:۵۳:۳۱
ارسال‌ها
پاسخ
طراح سایت آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: اردیبهشت ۱۳۹۶

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #7
RE: برنامه اي مي خواهم به زبان c سال ميلادي را به شمسي تبديل
سلام دوست عزیز خیلی راحت میتونید دانلودش کنید 
karait.com
۰۳-اردیبهشت-۱۳۹۶, ۱۳:۴۷:۴۶
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  زبان برنامه نویسی 8051 park 7 11,671 ۰۴-آذر-۱۳۹۰, ۲۲:۰۵:۳۷
آخرین ارسال: sarv
  اموز ش میکرو کنترلر های 8051 به زبان بیسیک 1nafar 20 25,641 ۲۵-اسفند-۱۳۸۷, ۱۹:۱۹:۴۵
آخرین ارسال: 1nafar
  کمپایلر 8051 به زبان اسمبلی avrmicro 3 3,623 ۰۷-اردیبهشت-۱۳۸۶, ۱۳:۱۱:۳۴
آخرین ارسال: ha_60

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS