PDA

View Full Version : مبتدی: نوشتن برنامه ای برای محاسبه تاریخ



Red Dot
دوشنبه 23 خرداد 1390, 17:46 عصر
سلام
لطفا من رو در نوشتن برنامه ی زیر راهنمایی کنید//Date calcute.cpp

#include <iostream>;
using std::cout;
using std::cin;
using std::endl;

int main()
{
int date,t2, t3, t4, t5, t6;


cout <<"Please enter the date = ";
cin >> date ;

t2 = date + 1;
t3 = date + 3;
t4 = date + 7;
t5 = date + 15;
t6 = date + 31;

cout << date << endl;

if ( t2 > 29 )
cout << t2 - 29 << endl;

if ( t2 <= 29 )
cout << t2 << endl;

if ( t3 > 29 )
cout << t3 - 29 << endl;

if ( t3 <= 29 )
cout << t3 << endl;

if ( t4 > 29 )
cout << t4 - 29 << endl;

if ( t4 <= 29 )
cout << t4 << endl;

if ( t5 > 29 )
cout << t5 - 29 << endl;

if ( t5 <= 29 )
cout << t5 << endl;

if ( t6 > 29 )
cout << t6 - 29 << endl;

if ( t6 <= 29 )
cout << t6 << endl;

system("pause");

return 0;
}

این برنامه به این صورت هست که اول تاریخ رو وارد میکنیم بعد اول خود تاریخ رو مینویشه و بعد اون رو + 1
سپس +3 ، بعد +7 ، +15 ، +31 میکنه و هر کدوم رو در یک خط مینویسه . اگر هم هر تاریخ بیش تر از 31 شد ، عدد به دست امده رو - 29 میکنه (چون ما ماه رو 29 روزه در نظر گرفتیم یعنی اسفند سال کبیسه )
تا این جا مشکلی نیست . اما اگر همین برنامه رو برای یه ماه 30 روزه بنویسیم یه مشکلی پیدا میشه . مثلا اگر تاریخ 30 ام رو وارد کنیم تاریخ اخر رو اشتباه می نویسه . چون در این جا بر عکس برنامه ی اول تاریخ ها در 3 ماه قرار دارند نه 2 ماه . این مشکل زمانی بدتر میشه که مثلا ماه اول 31 روزه باشه و ماه دوم 30 روزه . لطفا من را راهنمایی کنید .
(اگر میشه من را در نوشتن برنامه ای که برای تمام ماه ها کار بکنه راهنمایی کنید)
در نگاه اول شاید فکر بکنید ساده هست اما وقتی چند تا مثال عجیب قریب بزنید ، میبینید که جواب اشتباهه.
یا حق