• 0
Ano0

حساب العمر بـ c++

سؤال

السلام عليكم ورحمة الله

عندي مشروع  في ماده البرمجه

ومطلوب مني برنامج c++

 تونا مبتدئين اول ترم الحين

فكرت ببرنامج حساب العمر

 

 

int dn , mn , yn , dl , ml , yl ;

          int ad , am , ay ;

          char ch ;

 

          do

          {

         

          cout << " Enter now day , now month and now year : " << endl ;

          cin >> dn >> mn >> yn ;

          cout << " Enter last day , last month and now year : " << endl ;

          cin >> dl >> ml >> yl

 

كذا البدايه تمام

دورت بالنت طلع لي كود بس ما فهمته .. الاستاذه تقول اذا بتجيبي لي من النت لازم يكون بفهم

ابي احد يشرح لي هالخطوات اللي داخل if

 

 

if (dn < dl)

          {

                   dn = dn + 30 ;

                   mn = mn - 1 ;

          }

 

          if (mn < ml)

          {

                   mn = mn + 12 ;

                   yn = yn - 1 ;

          }

 

          ad = dn - dl ;

          am = mn - ml ;

          ay = yn - yl ;

 

          cout << "The age is " << ay <<" year and "

                    << am <<" month and "

                     << ad <<" day" << endl ;

                  

          cout << " Do Again : (y/n) ? " ;

          cin >> ch ;

          }

          while (ch != 'n' ) ;

}

 

 

:(

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

الاخت العزيزة...

 

لنفترض انه لدينا تاريخين now و Last كالتالي:

Now: 

اليوم 10   dn

الشهر 8       mn

السنة 2014    yn

 

اما  Last:

اليوم: 5    dl

الشهر: 2   ml

السنة: 2000   yl

حساب العمر يكون بكل بساطة :

 

        5=  ad = dn - dl ;

       6=   am = mn - ml ;

       14=   ay = yn - yl ;

 

ولكن ماذا لو كان يوم التاريخ السابق اكبر من التاريخ الحالي؟ مثال:

Now: 

اليوم 10   dn

الشهر 8       mn

السنة 2014    yn

 

اما  Last:

اليوم: 25    dl

الشهر: 2   ml

السنة: 2000   yl

 

النتيجة ستكون غير منطقية كالتالي:

 

        15-=  ad = dn - dl ;

       6=   am = mn - ml ;

       14=   ay = yn - yl ;

 

لذلك نقوم بعمل دالة if الشرطية للتأكد من هاتين الحالتين، فأذا كان يوم وشهر التاريح القديم اصغر من التاريخ الحالي فستحصل عملية طرح مثل الحالة الاولى، اما اذا كان يوم او شهر التاريخ القديم اكبر من يوم او شهر التاريخ الحالي فسنقوم باضافة 30 يوم للأيام او 12 للأشهر. لتوضيح ذلك الحالة الثانية ستصبح كالتالي:

if (dn < dl) هل عدد ايام التاريخ القديم اكبر من عدد ايام التاريخ الحالي؟ نعم اذا:

  {

               10+30=40    dn = dn + 30 ;

                2-1=1   mn = mn - 1 ;

          }

الان سنجري عكلية الطرح الاعتيادية:

 

        40-25=15    ad = dn - dl ;

       8-1=7   am = mn - ml ;

       2014-2000=14   ay = yn - yl ;

وهذا هو الصحيح

 

ارجوا ان تكون فهمتي الفكرة واي سؤال انا حاضر

 

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الف شكر

الله يسعدك دنيا واخره

 

بس سؤال اخير

 

     cout << " Do Again : (y/n) ? " ;

          cin >> ch ;

          }

          while (ch != 'n' ) ;

}

 

اقدر استغني عن هالجمله

واقفله بالريتيرن ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الف شكر

الله يسعدك دنيا واخره

 

بس سؤال اخير

 

اقدر استغني عن هالجمله

واقفله بالريتيرن ؟

شكرا على دعائك...

 

نعم بالامكان الاستغناء عنها لأنها حلقة تكرار من اجل سؤال المستخدم اذا ماكان يريد اعادة حساب العمر مرة اخرى

تحياتي لكِ بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاك الله خير

 

الف شكر لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .