نمایش روزهای بین 2 تاریخ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

نمایش روزهای بین 2 تاریخ

+1 امتیاز
سلام دوستان. میخام برنامه ای بنویسم که دو تا تاریخ شمسی را با فرمت yymmdd از ورودی بخونه تا اینجاش را بلدم و بعد از اون تمام روزهای بین این تاریخ هارو نمایش بده البته کبیسه بودن سال هم بایستی رعایت بشه. سال 87 کبیسه است. پیشاپیش از راهنمایی تون ممنونم.
سوال شده آبان 30, 1392  بوسیله ی Azar (امتیاز 628)   29 43 61
ویرایش شده آذر 1, 1392 بوسیله ی Azar

2 پاسخ

+2 امتیاز
 
بهترین پاسخ

من کبیسه بودن سال رو چک نکردم برای چک کردن کبیسه بودن میتونی باقیمانده به ۴ رو چک کنی .

#include <iostream>
using namespace std;
class Date
{
public:
    int year;
    int month;
    int day;
};
void printDates(Date date1,Date date2)//farz kardim date2 bozorgtare...
{
    while(date2.year-date1.year>0)
    {
        cout<<date1.year<<"\\"<<date1.month<<"\\"<<date1.day<<"\n";
        date1.day++;
        if((date1.day==32&&date1.month<=6)||(date1.day==31&&date1.month>=6))
        {
             date1.month++;
             date1.day=1;
        }

        if(date1.month==13)
        {
            date1.year++;
            date1.month=1;
        }
    }
    while(date2.month-date1.month>0)
    {
         cout<<date1.year<<"\\"<<date1.month<<"\\"<<date1.day<<"\n";
        date1.day++;
        if((date1.day==32&&date1.month<=6)||(date1.day==31&&date1.month>=6))
        {
             date1.month++;
             date1.day=1;
        }
    }
    while(date2.day-date1.day>0)
    {
         cout<<date1.year<<"\\"<<date1.month<<"\\"<<date1.day<<"\n";
         date1.day++;
    }

}
int main()
{
    Date date1,date2;
    date1.year=1373;
    date1.month=1;
    date1.day=15;

    date2.year=1374;
    date2.month=2;
    date2.day=8;

    printDates(date1,date2);
}

 

پاسخ داده شده آذر 1, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد آذر 1, 1392 بوسیله ی مصطفی ساتکی
برنامتون مشکل داره ..
چون فقط یکسال را محاسبه میکنه
مثلا اگر من بهش 87/5/12و 92/6/12 را بدهم فقط از سال 91 تا 92 را چاپ میکنه ...
نه همرو چاپ می کنه به خاطر محدودیت سایز باقره پنجره کنسول از مثلا ۱۰۰۰ خط بیشتر تو کنسول نشون داده نمیشه میتونی خروجی رو داخل یک فایل ذخیره کنی یا مثلا برای دیدن خروجی داخل while اول یک (Sleep(100 بزار (هدر windows.h )
+1 امتیاز
long  HejriDate2Days(Date date)

{

 long days;

 short int HejriMontsDays[] = {31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29};

 short int kabise;

 kabise = date.Y/4;

 days   = date.Y*365+kabise;

 if( date.Y%4 == 0 && date.Y > 0 )

  HejriMontsDays[11] = 30;

 for( int i=0; i<12 && i<date.M-1; i++ ){

  days  += HejriMontsDays[i];

 }

 days  += date.D;

 return days;

} 

 

پاسخ داده شده آذر 1, 1392 بوسیله ی Azar (امتیاز 628)   29 43 61
این برنامه درسته ؟
این الان تابع هست؟
چجوری میتونم ازش استفاده کنم ؟
ویژوال چرا از این Date ایراد میگیره ؟
کلاس Date استفاده شده رو میتونید شبیه کلاس Date پاسخ 'امید' معرفی کنید.
برای بررسی کبیسه بودن سال باید از این شرط استفاده کنید: باقیمانده عدد سال بر ۳۳ یکی از اعداد (1, 5, 9, 13, 17, 22, 26, 30) هست یا خیر.
...