فردا باید یه برنامه بنویسم که اگه مثلا وارد کردی 123
پرینت کنه 6 (1+2+3)
با حلقه هم باید باشه
تا چند رقمشم معلوم نیست
Printable View
فردا باید یه برنامه بنویسم که اگه مثلا وارد کردی 123
پرینت کنه 6 (1+2+3)
با حلقه هم باید باشه
تا چند رقمشم معلوم نیست
یادمه ما هم همچین سوالی داشتیم، اگه تعداد رقم ها از قبل معلوم باشه خیلی خیلی راحته مثل کد زیر :
که البته شاید خودت هم بلد باشی، اگه تعداد رقم ها هم معلوم نباشه توسط تابع های رشته ای میشه به راحتی این کار رو کرد ولی تو میگی از طریق حلقه ی فور !! یه کم باید روش فکر کرد.کد:Dim theNum As Integer
theNum = InputBox("Enter number")
num1 = theNum Mod 10 ' YEKAAN
Print num1
num2 = (theNum / 10) Mod 10 ' DAHGAAN
Print num2
num3 = Int((theNum / 10) / 10) ' SADGAAN
Print num3
Print "Sum : " & num1 + num2 + num3
یادمه یه زمانی نوشتم ولی باید فکر کنم تا یادم بیاد.
اقا من فکر کردم ولی به نتیجه ای نرسیدم
جون من یه کاریش کنید
فردا باید ببرم
می تونیم اون 10 و 100 رو با حلقه هی کم کنیم ولی یه جا باید ولی باید توی یه متغیر ذخیره کنیم
مطمئنم که مسئله ی آسونیه ... ولی یادم نمیاد چه جوری بود.
زنگ میزنم به چند تا از رفیقام اگه بلد بودن بهم بگن، منم واست مینویسم.
Private Sub Command1_Click()
Call Maghlob(Text1, v)
Text2 = v
End Sub
Public Function Maghlob(ByVal a, ByRef m)
While a > 10
m = m & a Mod 10
a = a \ 10
Wend
m = m & a
End Function
اینو پیدا کردم کار می کنه با حلقه ها هم هست ولی برعکس می کنه عددو خیلی پیچیده یکی یکم توضیحش بده
کسی که این برنامه رو نوشته خودش یه تابع برای بر عکس کردن عدد نوشته و توسط یک کامند اون تابع رو اجرا کرده.کد:Private Sub Command1_Click()
Call Maghlob(Text1, v)
Text2 = v
End Sub
بعد اومده عددی رو که کاربر وارد میکنه رو تقسیم بر 10 کرده تا بدین شکل دونه دونه اعدادش رو جدا کنه، بعدش اعداد رو پیش هم به صورت بر عکس (از آخر به اول) مینویسه تا بر عکس بشه.کد:Public Function Maghlob(ByVal a, ByRef m)
While a > 10
m = m & a Mod 10
a = a \ 10
Wend
m = m & a
End Function
ولی این به دردت نمیخوره، چون کاربر محدوده و فقط میتونه عدد 2 رقمی وارد کنه ولی تو میگی که کاربر با هر طولی عددی رو وارد کنه حساب کنه.
این تقریبا کارش همون کد بالاییه که برات نوشتم با این تفاوت که اومده یگان و دهگان رو بر عکس نوشته تا عدد رو بر عکس کنه.
مشکل حل شد [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
چرا زودتر نگفتی که اشکالی نداره با Do while باشه، همین کد رو به شکل زیر روی یه کامند بنویس :
از این که اون کد رو گذاشتی ممنونم.کد:
a = InputBox("enter number")
While a > 10
m = m + a Mod 10
a = a \ 10
Wend
Print m + a
خوب امتحانش کن فکر نکنم مشکلی داشته باشه.
واقعا دستت درد نکنه مجید جان
خیر ببینی جون
یکم توضیش می دی ؟
که فردا ضایع نشیم
من چیزی ازش نفهمیدم
خیلی حال کردم
کد:a = InputBox("enter number")
While a > 10
m = m + a Mod 10
a = a \ 10
Wend
Print m + a
توی خط اول همونجور که میدونی اومدیم و یه عدد از کاربر گرفتیم.
توسط دستور حلقه ی While/Wend اومدیم شرط گذاشتیم. من بهت پیشنهاد میدم که این رو به DoWhile/Loop تغییر بده، چون من خودم هم نمیدونم این حلقه که این به کاربرده چه کاربردی داره، اصلا تو کتابامون نبوده !!! و من وقتی این رو به DoWhile/Loop تغییر دادم دیدم که کد درست کار کرد، و طبیعتا هم باید درست کار میکرد.
در خط دوم اومدیم شرط a > 10 رو گذاشتیم، یعنی این که تا وقتی حلقه ادامه پیدا کنه و کدهای درون حلقه اجرا بشه که این متغیر یعنی همون عددی که از کاربر گرفته شده از 10 بزرگتر باشه ... در ادامه میفهمی که برای چی این شرط رو گذاشتیم.
در پایین اومدیم یک متغیر یعنی m رو با a mod 10 جمع کردیم. فرض کن کاربر عدد 123 رو وارد کرده، a mod 10 مساوی با 3 میشه ! یعنی ما توسط این کار اومدیم و یکان عددی رو که کاربر وارد کرده رو گرفتیم و بعد با m جمع کردیم. m یه متغیر کمکی ما هست که برای جمع کردن اعداد از اون استفاده کردیم. پس یادت باشه تا الان a مساوی 3 یعنی یکان 123 و m مساوی با 3 هست.
توی خط بعدی اومدیم مقدار a رو به a \10 تغییر دادیم، اگه یادت باشه mod برای ما باقی مونده رو حساب میکرد که در مرحله ی اول میشه یکان عدد، ولی علامت \ برای ما خارج قسمت تقسیم رو بر میگردونه. بنابراین حالا مقدار a به 12 تغییر پیدا میکنه.
حلقه به آخر میرسه و دوباره شرط چک میشه، چون 12 از 10 بزرگتر هست، بنابراین دوباره این روند ادامه پیدا میکنه و طبق دستورات m با باقی مانده ی 12 بر 10 جمع میشه. دوباره یکان 12 رو به دست اوردیم، بنابراین 3 + 2 میشه و میشه 5 ... مقدار m حالا 5 هست. یعنی یکان و دهگان عدد رو با هم جمع کردیم. در خط بعدی میاد خارج قسمت رو بهمون بر میگردونه.
خارج قسمت 12 تقسیم بر 10 قطعا میشه 1 ... بنابراین به راحتی تونستیم صدگان رو هم به دست بیاریم و آخر سر مقدار m که 5 بود رو با 1 جمع میکنیم و میشه 6 !!!
فکر کنم متوجه شدی ... اگه نشدی بازم واست توضیح بدم.
از این که اینقدر توضیح دادم ببخشید، خواستم متوجه کد بشی. :10:
دستت واقعا درد نکنه
امشب ما رو واقعا شرمنده کردی
ولی این حلقه ها هم دنیایی دارن