بسم الله الرحمن الرحیم
خب اینم از برنامه تبدیل تاریخ شمسی به میلادی و تبدیل تاریخ میلادی به شمسی .
برنامه هم در ویژوال استودیو قابل استفاده است و هم در توربو سی . اگه قصد دارید برنامه رو در توربو سی اجرا کنید چند نکته زیر رو رعایت کنید .
1.بجای هدرهای فایل . اونهایی که کامنت کردم رو قرار بدید
و 2.std:: رو از پشت عبارتهای cout و endl بردارید.
اگه میخوایید برنامه رو تبدیل به معادلش به زبان سی کنید . کافیه بجای cout از printf استفاده کنید ( من کامنت کردم ) . و بعد stdio.h رو به برنامه تون اضافه کنید. همین
امیدوارم مثمر ثمر واقع بشه
برنامه هم در قالب پروژه ویژوال سی++ 2008 برای دانلود قرار داده شده میتونید دنلود و استفاده کنید .
//In the name of GOD
//برنامه تبديل تاريخ شمسي به ميلادي در سي++
//برنامه تبديل تاريخ ميلادي به شمسي در سي++
//Source: Forum.Ustmb.Ir
//Master.huricane@gmail.com
//MainSource: http://www.farsiweb.info/jalali/jalali.c
void gregorian_to_jalali(/* output */ int *j_y, int *j_m, int *j_d, /* input */ int g_y, int g_m, int g_d);
void jalali_to_gregorian(/* output */ int *g_y, int *g_m, int *g_d,/* input */ int j_y, int j_m, int j_d);
for (i = 0; i < 11 && j_day_no >= j_days_in_month[i]; ++i) {
j_day_no -= j_days_in_month[i];
}
jm = i+1;
jd = j_day_no+1;
*j_y = jy;
*j_m = jm;
*j_d = jd;
}
//تبديل تاريخ شمسي به ميلادي
void jalali_to_gregorian(int *g_y, int *g_m, int *g_d,
int j_y, int j_m, int j_d)
{
int gy, gm, gd;
int jy, jm, jd;
long g_day_no, j_day_no;
int leap;
int i;
jy = j_y-979;
jm = j_m-1;
jd = j_d-1;
j_day_no = 365*jy + (jy/33)*8 + (jy%33+3)/4;
for (i=0; i < jm; ++i)
j_day_no += j_days_in_month[i];
با سلام
ابتدا از کد خوبتون تشکر می کنم من در پروژه ام ازش استفاده کردم خدا خیرتون بده. فقط نکته ایی که وجود داره اینه که شما کبیسه بودن سال میلادی رو که باعث تغییر تعداد روزهای ماه دوم میلادی میشه رو در نظر نگرفتین و این موضوع باعث میشه در سالهای کبیسه میلادی مخصوصا تو روزهای اول ماه یک روز پس و پیش بشه که کافیه کدی که من زیر نوشتم رو به پروژه اتون اضافه کنین بعد از خط 40 یعنی همونجاییکه بر اساس آرایه روزهای ماه میاد روزهای تاکنون گذشته از اول سال رو داره جمع میبنده.
if ( (int32uGre_YearLeap)%4U == 0U )
{
if ( (int32uGre_YearLeap)%100U == 0U )
{
if ( (int32uGre_YearLeap)%400U == 0U )
{
if gm > 0U)
{
g_day_no =g_day_no + 1U;
}
}
}
else
{
if (gm > 0U)
{
g_day_no = g_day_no + 1U;
}
}
}
واسه توضیحشم باید بگم اول یه متغییر تعریف کنین که عدد سال میلادی کنونی رو بدون اینکه از 1600 کم بشه نگه داره (در اینجا من از int32uGre_YearLeap استفاده کردم). براساس توضیحاتی که ویکیپدیا درباره محاسبه کبیسه بودن سال میلادی داره، اگر عدد سال تقسیم بر 4 باقیمانده صفر بود و تقسیم بر 100 صفر نبود (یعنی سال آخر سده نبود) حتما کبیسه است و باید به تعداد روزهای ماه دوم یه روز اضافه کرد که در اینجا یعنی اگر عدد کنونی ماه هم از صفر بیشتر شد یعنی از ماه دوم گذشتیم پس یه یک اضافه کن. ولی اگر هم بر 4 بخش پذیر بود هم بر 100، اگر بر 400 هم بخشپذیر باشد سال کبیسه هست وگرنه خیر. امیدوارم توضیحات واضح باشه.
موفق باشید
با سلام
ابتدا از کد خوبتون تشکر می کنم من در پروژه ام ازش استفاده کردم خدا خیرتون بده. فقط نکته ایی که وجود داره اینه که شما کبیسه بودن سال میلادی رو که باعث تغییر تعداد روزهای ماه دوم میلادی میشه رو در نظر نگرفتین و این موضوع باعث میشه در سالهای کبیسه میلادی مخصوصا تو روزهای اول ماه یک روز پس و پیش بشه که کافیه کدی که من زیر نوشتم رو به پروژه اتون اضافه کنین بعد از خط 40 یعنی همونجاییکه بر اساس آرایه روزهای ماه میاد روزهای تاکنون گذشته از اول سال رو داره جمع میبنده.
if ( (int32uGre_YearLeap)%4U == 0U )
{
if ( (int32uGre_YearLeap)%100U == 0U )
{
if ( (int32uGre_YearLeap)%400U == 0U )
{
if gm > 0U)
{
g_day_no =g_day_no + 1U;
}
}
}
else
{
if (gm > 0U)
{
g_day_no = g_day_no + 1U;
}
}
}
واسه توضیحشم باید بگم اول یه متغییر تعریف کنین که عدد سال میلادی کنونی رو بدون اینکه از 1600 کم بشه نگه داره (در اینجا من از int32uGre_YearLeap استفاده کردم). براساس توضیحاتی که ویکیپدیا درباره محاسبه کبیسه بودن سال میلادی داره، اگر عدد سال تقسیم بر 4 باقیمانده صفر بود و تقسیم بر 100 صفر نبود (یعنی سال آخر سده نبود) حتما کبیسه است و باید به تعداد روزهای ماه دوم یه روز اضافه کرد که در اینجا یعنی اگر عدد کنونی ماه هم از صفر بیشتر شد یعنی از ماه دوم گذشتیم پس یه یک اضافه کن. ولی اگر هم بر 4 بخش پذیر بود هم بر 100، اگر بر 400 هم بخشپذیر باشد سال کبیسه هست وگرنه خیر. امیدوارم توضیحات واضح باشه.
موفق باشید
خیلی ممنون بابت وقتی که گذاشتین و قطعه کدتون رو با بقیه به اشتراک گذاشتید.
این پست مربوط به خیلی سال پیشه خیلی زیاد! 5 6 سال پیش
خیلی خوبه که بعد این همه سال هنوز استفاده داره
علاقه مندی ها (Bookmarks)