তামিম শাহরিয়ার সুবিন-এর লেখা কম্পিউটার প্রোগ্রামিং ২য় খণ্ড প্রকাশ করেছে দ্বিমিক প্রকাশনী। বিস্তারিত জানতে এখানে ক্লিক করুন।

বয়স

সমস্যাটি পাঠিয়েছেন মীর ওয়াসি আহমেদ (এসিএম আইসিপিসি ওয়ার্ল্ড ফাইনালিস্ট - ২০১২)।

বয়স

কোন এক গানের স্কুলে ভর্তি ফর্ম পূরণ করতে গিয়ে ছাত্রছাত্রীরা দেখল ওখানে জন্ম তারিখ চাওয়ার পাশাপাশি, একটা নির্দিষ্ট দিনে তাদের বয়স মোট কত দিন সেটা চেয়েছে। মজার বিষয় হল সবাইকে দিন তারিখ দিতে বলেছে বাংলা দিনপঞ্জি হিসেবে। তুমি ওদের এই কাজটা সহজ করার জন্যে একটা প্রোগ্রাম লিখে দাও।

বাংলা দিনপঞ্জিতে থাকে বারো মাস। বৈশাখ, জ্যৈষ্ঠ, আষাঢ়, শ্রাবণ, ভাদ্র, আশ্বিন, কার্তিক, অগ্রহায়ণ, পৌষ, মাঘ, ফাল্গুন, চৈত্র। প্রথম পাঁচ মাস ৩১ দিনে আর শেষ সাত মাস ৩০ দিনে। তবে অধিবর্ষে (Leap year) ফাল্গুন মাস হয় ৩১ দিনে।

যে যে বছর ৪০০ দিয়ে বিভাজ্য সেগুলো অধিবর্ষ, তা যদি না হয় এবং ১০০ দিয়ে বিভাজ্য হয় তাহলে অধিবর্ষ হবে না। এগুলোর কোনটিই যদি না হয়, আর ৪ দিয়ে বিভাজ্য হয়, তাহলে অধিবর্ষ হবে। বাকি যে বছর গুলো থাকবে সেগুলো অধিবর্ষ নয়।

উদাহরণ: ১৯০০ সাল ৪০০ দিয়ে বিভাজ্য নয়, কিন্তু ১০০ দিয়ে বিভাজ্য, তাই ১৯০০ সাল অধিবর্ষ না। ২০০০ সাল অধিবর্ষ, ৪০০ দিয়ে বিভাজ্য। ১৯৯৬ অধিবর্ষে, কারণ ৪০০ বা ১০০ দিয়ে বিভাজ্য না হলেও, ৪ দিয়ে বিভাজ্য। ১৯৯৭ অধিবর্ষ নয়, কারণ ৪০০, ১০০, বা ৪ কোনটি দিয়েই বিভাজ্য নয়।

বিঃ দ্রঃ ধরে নাও যে, সবার জন্ম হয়েছে দুপুর বারোটায়, ফর্মে চাওয়াও হয়েছে ওই দিন দুপুর বারোটা পর্যন্ত বয়স। ১৪১৮ সনের ১লা বৈশাখ দুপুর ১২টা থেকে ১৪১৯ সনের ১লা বৈশাখ দুপুর ১২ টা পর্যন্ত ঠিক ৩৬৫ দিন।

৭টি মন্তব্য:

  1. ভাইয়া, ৩নং আউটপুটে তো 6094 হওয়ার কথা!

    উত্তরমুছুন
  2. ২নং আউটপুটে তো ৭৩০৩ হওয়ার কথা! আমি নিজের হাতে করেছি এবং Online এ check করেছি ফলাফল ৭৩০৩ ই হয়

    উত্তরমুছুন
  3. Why show WA in this code ? Please help me anyone as soon as possible.

    #include
    int main()
    {
    int n,y1,m1,d1,m,d,m2,y,i,c,t,mday,tday,j;
    printf("1419 8 7\n");
    scanf("%d",&n);
    for(i=0;i1419&&m1>8&&d1>7)||(y1>1419||m1>12||d1>31))
    goto xx;

    t=0;c=0;

    for(j=y1;j<1419;++j)
    {


    if(j%400==0)
    c=c+1;
    else if(j%100==0)
    t++;
    else if(j%4==0)
    c=c+1;
    else
    t++;
    }
    if(d1>7)
    {
    d=0;
    d=37-d1;
    m1=m1+1;
    if(m1>8)
    {
    y=0;
    m=0;
    m=20-m1;
    y1=y1+1;
    y=1419-y1;
    }
    else
    {
    m=0;
    m=8-m1;
    y=0;
    y=1419-y1;
    }
    }
    else
    {
    d=0;
    d=7-d1;
    if(m1>8)
    {
    m=0;y=0;
    m=20-m1;
    y1=y1+1;
    y=1419-y1;
    }
    else
    {
    m=0;y=0;
    m=8-m1;
    y=1419-y1;
    }

    }


    if(m>5)
    {
    m2=0;mday=0;
    m2=m-5;
    mday=m2*30+5*31;
    }
    else if(m==5)
    {
    mday=0;
    mday=5*31-1;
    }
    else
    {
    mday=0;
    mday=m*31;
    }
    tday=0;
    tday=y*365+mday+d+c;
    printf("%d\n",tday);

    }
    return 0;
    }

    উত্তরমুছুন
  4. I do not find exact results.Please tell me, what is wrong?
    #include

    using namespace std;

    int age_to_date(){
    int age[3] = {1419, 8, 7};

    int a = (age[0]*365)+age[1]*30+age[2];
    return a;
    }
    int age_to_date_1(){
    int age[3] = {1400, 2, 14};

    int a = (age[0]*365)+age[1]*31+age[2];
    return a;
    }
    int main()
    {
    cout<<"F : "<<age_to_date()<<endl;
    cout<<"S : "<<age_to_date_1()<<endl;
    cout<<"R : "<<age_to_date() - age_to_date_1();
    return 0;
    }

    উত্তরমুছুন
  5. প্রতি ইনপুটের সাথে সাথেই আউটপুট দেয়া লাগবে না টেস্ট কেস শেষ হওয়ার পর?

    উত্তরমুছুন

এখানে বিষয়সংশ্লিষ্ট মন্তব্য কিংবা প্রশ্ন করা যাবে। বাংলায় মন্তব্য করার সময় বাংলা হরফে লিখতে হবে। আর রোমান হরফে লিখলে ইংরেজিতে লিখতে হবে। নতুবা মন্তব্য প্রকাশ করা হবে না। ধন্যবাদ।