PDA

View Full Version : سوال: الگوریتم تبدیل روز سال شمسی به ماه و روز آن



bright_meteor
شنبه 31 مرداد 1388, 22:54 عصر
سلام می خواستم بدونم چه طور می شود الگوریتمی بدون استفاده از if نوشت که روز سال شمسی را بگیرد و ماه و روز ماه را تحویل بدهد ممنون می شم کمکم کنید

tdkhakpur
یک شنبه 01 شهریور 1388, 00:31 صبح
حالت بسیار ابتدایی و دقت بسیار کم


cin>>days
m = days/(31-(days/187)) +1;
d = days%(31-(days/187));
مثال
days = 23;
m = 23/(31-(23/187))+1 = 23/(31-0)+1 = 23/31+1 = 0+1=1
d = 23%(31-(23/187)) = 23%(31-0) = 23%31 = 23

البته ابتدائیه و داخل کار های بزرگ نمیتوان استفاده کرد خودتان وسیعتر و دقیق تر کنید!!!!

Mrs.Net
دوشنبه 02 شهریور 1388, 04:39 صبح
سلام می خواستم بدونم چه طور می شود الگوریتمی بدون استفاده از if نوشت که روز سال شمسی را بگیرد و ماه و روز ماه را تحویل بدهد ممنون می شم کمکم کنید
باید از حلقه های تکرار استفاده کنید

aminfarajian
دوشنبه 02 شهریور 1388, 12:49 عصر
با سلام
همونطور که دوستمون Mrs.Net گفتن باید از حلقه های تکرار استفاده کنید.
برای این کار یه متغیر برای ماه در نظر میگیرید که در ابتدا مقدارش برابر صفره (من اینجا Month گرفتم). یه متغیر هم برای روز (من day گرفتم)
حالا کاری که باید بکنید اینه که ابتدا 31 روز 31 روز از عدد ورودی کم کنید. هر یک بار که از اون متغیر 31 روز کم می کنید، 1 واحد باید به متغیر ماه اضافه کنید. اگه 6 بار از عدد ورودی کم کردید و هنوز عدد باقیمونده بزرگتر از 30 بود، این دفعه باید 30 روز 30 روز ازش کم کنید.
در انتها چیزی که از عدد ورودی میمونه تعداد روزها رو نشون میده و متغیر ماه هم شماره ماه رو.
این هم کدی که من برای این کار نوشتم:

int main()
{
int day,month=1;
cin>>day;
while(day>=31&&month<=6)
{
day-=31;
month ++;
}
while(day>=30&& month <=12)
{
day-=30;
month ++;
}
cout<<endl<<"Month: "<< month <<"\tday: "<<day<<endl;
return 0;
}