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:
سلام../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
************
برنامه ی شما مثل همون برنامه ی آخری هستش که نوشتم../// اما اگه تو برنامتون مضارب 31 کوچکتر و مساوی از 186 و (مضارب 30) + 186 رو وارد کنید// برنامه نتیجه ی اشتباهی رو به دست میاره..//// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*****************
این اعداد رو امتحان کنید./// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
***********
**************کد:31 = 31 x 1
62 = 31 x 2
93 = 31 x 3
124 = 31 x 4
155 = 31 x 5
186 = 31 x 6
216 = (30 x 1) + 186
246 = (30 x 2) + 186
276 = (30 x 3) + 186
306 = (30 x 4) + 186
336 = (30 x 5) + 186
اگه با این روش راحت تر هستید برنامه ی آخر رو بررسی کنید/// اون برنامه هم به همین روش نوشته شده// فقط چند تا شرط اضافه تر داره که باعث میشه با اعداد بالا مشکلی نداشته باشه../// اگه توضیح خواستید بگید./// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
**********
موفق باشید! [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام ببخشید اما کد شما درست جواب نمیده لطفاً این عدد ها رو امتحان کنید متوجه می شید
31
62
93
124
155 و................
همینطور 31 عدد به این ها اضافه کنید میبینید که روز آنها را 0 چاپ می کنه.
سلام../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
************
تو برنامه ی آخر این مشکل وجود نداره../// لطفاً دوباره امتحان کنید../// [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
******************
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*******************
موفق باشید! [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
***************************
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سو تفاهم نشه من با آقای پسر اژدها سوار بودم وقتی عدد هایی رو که ذکر کردم بزنید متوجه می شید که کدشون اشتباه است:n26: