الگوریتم دریافت سن شخص با تاریخ تولد در زبان C++



حل الگوریتم دریافت سن شخص با تاریخ تولد در زبان C++


در این الگوریتم ما از تابع یا Function و آرایه یا Array برای دقیق بودن برنامه خود استفاده مینمایم. در قدم اول قبل از تابع اصلی برنامه خود یک تابع به نام age میسازیم و نوعیت برگشتی آنرا هم Void میگیریم و در قسمت پارامترا های این تابع متغییر های که میخواهیم در این تابع ارسال گردد را می نویسیم.
حالا در تابع اصلی برنامه خود بعضی متغییر های را برای دریافت تاریخ فعلی و تاریخ تولد میسازیم تا از ورودی تاریخ را دریافت و در خود ذخیر نماید.
بعد از آن تابع را که ساخته بودیم در نخست آنرا می نویسیم تا در داخل تابع اصلی ما اجرا گردد و در قسمت پارامترهای این همان متغییر های را که در بین تابع اصلی خود برای دریافت تاریخ ساخته بودیم می نویسیم تا قیمت های این متغییر ها در تابع age ارسال گردد.
حالا بیرون از تابع اصلی در پایان برنامه تابع age را مینویسیم و در داخل آن نیاز به چهار متغییر داریم که سال ، ماه، روز را ذخیر نماید و متغییر چهارمی برای نگهداشتن تعداد روزهای ماه ها از جنس آرایه میسازیم. و در این آرایه تعداد روز های هر ماه را به ترتیب می نویسیم.
بعد از این عملیه های ریاضی را اجرا مینمایم با یک سری شرایط خاصی که در سورس کد این برنامه شما میبینید.

الگوریتم این برنامه قرار ذیل میباشد:
  1. شروع
  2. سال فعلی، ماه فعلی،روز فعلی را بخوان
  3. سال تولد،ماه تولد، روز تولد را بخوان
  4. تعداد روز های ماه را در mdays قرار بده
  5. سال فعلی - سال تولد را در y قرار بده
  6. اگر ماه فعلی < ماه تولد آنگاه y - 1  و ماه تولد - ماه فعلی - 12 را در m قراربده درغیر اینصورت برو به خط 9
  7. اگر روزفعلی < روز تولد آنگاه m - 1 و (mdays -1) - (روز تولد - روز فعلی) را در d  قرار بده در غیر اینصورت برو به خط 8
  8. روز فعلی - روز تولد را در d قرار بده
  9. ماه فعلی - ماه تولد را در m قرار بده
  10. y , m ,d را چاپ کن
سوالات تانرا در کامنت بنویسید!
#include <iostream>
using namespace std;
void age(int cday, int cmonth, int cyear, int bday, int bmonth, int byear);
int main()
{
  int cday, cmonth, cyear, bday, bmonth, byear;
  cout << " Enter the present date in the format dd mm yyyy : ";
  cin >> cday >> cmonth >> cyear;
  cout << " Enter the birth date in the format dd mm yyyy : ";
  cin >> bday >> bmonth >> byear;
  age(cday, cmonth, cyear, bday, bmonth, byear);
  return 0;
}
void age(int cday, int cmonth, int cyear, int bday, int bmonth, int byear){
  int d,m,y;
  int mdays[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  y = cyear - byear;
  if (cmonth < bmonth) {
    --y;
    m = 12 - (bmonth - cmonth);
    if (cday < bday) {
      --m;
      d = mdays[cmonth - 1] - (bday - cday);
    }else{
      d = cday - bday;
    }
  }else{
    m = cmonth - bmonth;
  }
  std::cout << " Your age is: " << y << " Years "<< m << " Months and "<< d << " Days" << '\n';
  return ;
}

Comments

  1. عتيق جان سلام
    ممنون
    یک سوال چرا از این تابع استفاده کردی
    31,28,31,30,31,30,31,31,30,31,30,31

    ReplyDelete

Post a Comment