الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلقمُجاب
بدأه Ano0 في 6 أبريل 2014 · 4 رد · 7,779 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

ومطلوب مني برنامج 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' ) ;

}

 

 

:(

#2 أفضل إجابة

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

 

لنفترض انه لدينا تاريخين 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
#3

الف شكر

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

 

بس سؤال اخير

اقتباس

 

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

          cin >> ch ;

          }

          while (ch != 'n' ) ;

}

 

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

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

#4
Ano0 كتب:

الف شكر

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

 

بس سؤال اخير

 

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

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

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

 

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

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

#5

جزاك الله خير

 

الف شكر لك

هذا الموضوع مغلق.

مواضيع مشابهة