n امین روز سال چند شنبه میشود؟ مثلا اگر n=34 باشد میشه 2 اردیبهشت
Printable View
n امین روز سال چند شنبه میشود؟ مثلا اگر n=34 باشد میشه 2 اردیبهشت
لطفا سوالت رو واضح تر بگو تا بتونم کمکت کنمنقل قول:
سلام../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
************
این برنامه همون کاری که می خواید رو انجام میده..//// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
***************
***********کد:Sub Main()
Dim intInput As Integer
Dim intMonth As Integer, intDay As Integer
intInput = InputBox("لطفا ًعدد مورد نظر را وارد کنید")
intMonth = 1
For i = 0 To 5
If intInput > 31 Then
intInput = intInput - 31
intMonth = intMonth + 1
End If
Next
For i = 0 To 4
If intInput > 30 And intInput <> 31 Then
intInput = intInput - 30
intMonth = intMonth + 1
End If
Next
intDay = intInput
Call MsgBox("Month: " & intMonth & " , Day: " & intDay)
End Sub
موفق باشید! [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام معذرت می خوام ولی بهتر بود که در حلقه دوم دستور if رو اینطوری بنویسید
کد:If intInput>= 30 Then
intInput=intInput-30
intMonth=intMonth+1
End if
سلام../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*************
خوشحالم از این که برنامه رو خوندید و ممنون که جواب دادید../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
****************
مشکل اینجاست که اگه از 30=< استفاده کنید// با وارد کردن اعداد 30 61 92 123 154 185 216 246 276 306 336 و اعداد قبل + 1 و.../// برنامه نتیجه ی اشتباه نمایش میده../// (یکم بهش فکر کنید متوجه میشید چرا..///)./// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
************
موفق باشید! [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
***************************
اینا اعدادی هستند که با وارد کردنشون// شماره روز برابر صفر میشه///
************
***************کد:
30 = 31x0 + 30x1
61 = 31x1 + 30x1
92 = 31x2 + 30x1
123 = 31x3 + 30x1
154 = 31x4 + 30x1
185 = 31x5 + 30x1
216 = 31x6 + 30x1
246 = 31x6 + 30x2
276 = 31x6 + 30x3
306 = 31x6 + 30x4
336 = 31x6 + 30x5
...
عدد 62 میشه 31 + 31 یعنی روز 31 ماه 2../// ولی اگه این عدد رو تو برنامه وارد کنید نتیجه میشه روز 1 ماه 3 که اشتباه هستش..///
***********
برنامه با وارد کردن هر دو عدد 31 و 32 نتیجه ی روز 1 ماه 2 رو نمایش میده../// که این مقدار برای عدد 31 اشتباه هستش..////
***************
اعداد بالا + 1 هم همین نتیجه رو میدن..//////////// از اعداد بالا بین اعداد بزرگتر از 217 اگه این اعداد رو با یک جمع کنید و تو برنامه وارد کنید// به دلیل مشکلی که تو حلقه دوم وجود داره مقدار روز برای ماه های 7 به بعد برابر 31 میشه که اشتباه هستش/// (این مشکل برای برنامه ی اول که خودم نوشتم وجود داره// و تو برنامه ی شما نتیجه مثل نتیجه ی اعداد 31 و 32 میشه//)..////
********
و کلی عدد دیگه هم هست..//////
این طور که معلومه هر دو برنامه مشکل داره../// متأسفانه وقتی برنامه قبل رو می نوشتم زیاد روش فکر نکردم و اون مشکلات پیش اومد..//// واقعاً متأسفم../// امیدوارم منو ببخشید../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*********************
این برنامه ی جدیدی هستش که نوشتم/// فقط امیدوارم این بار درست کار کنه../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*****************
******************کد:Dim intInput As Integer
Dim intMonth As Integer, intDay As Integer
intInput = InputBox("لطفا ًعدد مورد نظر را وارد کنید")
intMonth = 1
For i = 0 to 10
If i <= 5 then
If intInput > 31 Then
intInput = intInput - 31
intMonth = intMonth + 1
Else
Exit For
End If
Else
If intInput > 30 Then
intInput = intInput - 30
intMonth = intMonth + 1
Else
Exit For
End If
End If
Next
intDay = intInput
Call MsgBox("Month: " & intMonth & " , Day: " & intDay)
ممنون که نظر دادید/// حالا برنامه بهتر از قبل کار می کنه..//// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
**************
سلا م میشه بگی چرا if رو کوچکتر مساوی 5 گذاشتی و یه توضیح در مورد برنام ات؟ راستی ممنون از توجهت:n11::n16:
سلام...////
****************
دو خط اول برنامه تعريف متغيير هايي هستش که بهشون نياز داريم.///
*******************
**********کد:
Dim intInput As Integer
Dim intMonth As Integer, intDay As Integer
متغيير intInput ورودي کاربر رو نگه ميداره// متغيير intDay شماره ي روز (در ماه) و متغيير intMonth شماره ي ماه رو ذخیره میکنه..///
**************
تو خط بعدي ورودي رو از کاربر دريافت مي کنيم و داخل متغيير intInput قرار ميديم// و تو خط بعديش شماره ماه رو برابر 1 قرار ميديم../// (شماره ماه بايد يه عدد بين 1 تا 12 باشه و مقدار 0 قابل قبول نيست.//)///
**********
**************کد:
intInput = InputBox("لطفا ًعدد مورد نظر را وارد کنيد")
intMonth = 1
خط بعدي تعريف يه حلقه هستش که 11 بار تکرار ميشه../// (0 1 2 3... تا 10 که جمعاً میشه 11 تا عدد.// 6ماه 31 روزه و 5ماه 30 روزه// بیشتر از این نیازی نیست که بررسی بشه///)///
**********
***************کد:
For i = 0 to 10
تو خط بعدي يه شرط وجود داره که بررسي مي کنه حلقه چند بار اجرا شده// اگه حلقه کمتر از 6 بار اجرا شده باشه يعني برنامه در حال بررسي 6 ماه اول سال هستش و ماه ها 31 روزه هستند/// و در صورت بزرگتر بودن عدد ورودي از 31// تعداد 31 روز از عدد ورودي کسر ميشه و يکي به مقدار ماه اضافه ميشه..///
***********
تو قسمت بعدي يه شرط وجود داره که بررسي مي کنه اگه عدد ورودي از 31 بزرگتر نباشه حلقه متوقف بشه// (اگه این شرط رو نذاریم برنامه ماه های 30 روزه رو هم بررسی می کنه و ممکنه شماره روز به اشتباه 0 بشه و مقدار ماه یکی بیشتر از مقدار درست محاسبه بشه// مثل اتفاقی که تو برنامه ی قبل می افتاد///)..////
**************
قسمت دوم شرط اول در صورتي اتفاق مي افته که تعداد دفعات اجراي حلقه از 6 بيشتر باشه// در اين صورت يعني برنامه در حال بررسي ماه های بعدی سال هستش و در این ماه ها تعداد روز های هر ماه 30 روز هستش// و اگه عدد ورودی از 30 بزرگتر باشه تعداد 30 روز ازش کم میشه و یکی به مقدار ماه اضافه میشه..///
******************
و اگر مقدار ورودی کمتر از 30 باشه حلقه متوقف میشه/// اینجوری سرعت برنامه یه مقدار افزایش پیدا می کنه و از به کار گیری بیهوده ی منابع سیستم جلوگیری میشه///
************
در آخر مقدار متغییر intDay رو برابر مقدار ورودی که تا اینجای برنامه حتماً به یه عدد کوچکتر از 31 یا 32 تبدیل شده قرار میدیم// که شماره ی روز رو مشخص می کنه..///
**************
و نتیجه رو به کاربر نشون میدیم..///
*********************
یه روش دیگه برای نوشتن این برنامه استفاده از عملگر های ریاضی تقسیم، باقی مانده و تفریق هستش..//// که خیلی ساده تره..///
********
موفق باشید!
این برنامه هم کار همون برنامه ی بالا رو انجام میده// و با عملگر های ریاضی تقسیم، باقی مانده و... نوشته شده.../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
**************
****************کد:
Dim intInput As Integer
Dim intMonth As Integer, intDay As Integer
intInput = InputBox("لطفا ًعدد مورد نظر را وارد کنيد")
If intInput <= (6 * 31) Then
If (intInput Mod 31) <> 0 Then
intMonth = int(intInput / 31) + 1
intDay = intInput Mod 31
Else
intMonth = int(intInput / 31)
intDay = 31
End If
Else
intInput = intInput - (6 * 31)
If (intInput Mod 30) <> 0 Then
intMonth = int(intInput / 30) + 7
intDay = intInput Mod 30
Else
intMonth = int(intInput / 30) + 6
intDay = 30
End If
End If
Call MsgBox("Month: " & intMonth & " , Day: " & intDay)
تو برنامه ی اول intInput > 30 And intInput <> 31 معادل intInput > 31 هستش و اشتباهه// این باعث میشه شرط دوم هم ماه ها رو 31 روزه در نظر بگیره../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
**************
ای کاش از اولش تو این تاپیک پست نمی دادم..//// همش خراب کاری شد..//// (اصلاً شاید به خاطر همین اینجا رو ترک کنم!!!//)./// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
***********
موفق باشید! [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
من اینو نوشتو درست جواب داد
a = InputBox("Enter adad ")
If a <= 186 Then
m = a \ 31
m = m + 1
r = a Mod 31
End If
If a > 186 And a <= 365 Then
a = a - 186
m = a \ 30
m = m + 7
r = a Mod 30
End If
Print "mah:"; m
Print "rooz:"; r
End Sub
راستی دمت گرم کاش همه مث تو بودن از اینجا نرو داش:n04::n22: