فردا باید یه برنامه بنویسم که اگه مثلا وارد کردی 123
پرینت کنه 6 (1+2+3)
با حلقه هم باید باشه
تا چند رقمشم معلوم نیست
فردا باید یه برنامه بنویسم که اگه مثلا وارد کردی 123
پرینت کنه 6 (1+2+3)
با حلقه هم باید باشه
تا چند رقمشم معلوم نیست
یادمه ما هم همچین سوالی داشتیم، اگه تعداد رقم ها از قبل معلوم باشه خیلی خیلی راحته مثل کد زیر :
که البته شاید خودت هم بلد باشی، اگه تعداد رقم ها هم معلوم نباشه توسط تابع های رشته ای میشه به راحتی این کار رو کرد ولی تو میگی از طریق حلقه ی فور !! یه کم باید روش فکر کرد.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یادمه یه زمانی نوشتم ولی باید فکر کنم تا یادم بیاد.
اقا من فکر کردم ولی به نتیجه ای نرسیدم
جون من یه کاریش کنید
فردا باید ببرم
می تونیم اون 10 و 100 رو با حلقه هی کم کنیم ولی یه جا باید ولی باید توی یه متغیر ذخیره کنیم
Last edited by mohsen_3; 17-02-2009 at 19:47.
مطمئنم که مسئله ی آسونیه ... ولی یادم نمیاد چه جوری بود.
زنگ میزنم به چند تا از رفیقام اگه بلد بودن بهم بگن، منم واست مینویسم.
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
اینو پیدا کردم کار می کنه با حلقه ها هم هست ولی برعکس می کنه عددو خیلی پیچیده یکی یکم توضیحش بده
Last edited by mohsen_3; 17-02-2009 at 20:01.
کسی که این برنامه رو نوشته خودش یه تابع برای بر عکس کردن عدد نوشته و توسط یک کامند اون تابع رو اجرا کرده.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بعد اومده عددی رو که کاربر وارد میکنه رو تقسیم بر 10 کرده تا بدین شکل دونه دونه اعدادش رو جدا کنه، بعدش اعداد رو پیش هم به صورت بر عکس (از آخر به اول) مینویسه تا بر عکس بشه.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ولی این به دردت نمیخوره، چون کاربر محدوده و فقط میتونه عدد 2 رقمی وارد کنه ولی تو میگی که کاربر با هر طولی عددی رو وارد کنه حساب کنه.
این تقریبا کارش همون کد بالاییه که برات نوشتم با این تفاوت که اومده یگان و دهگان رو بر عکس نوشته تا عدد رو بر عکس کنه.
مشکل حل شد![]()
چرا زودتر نگفتی که اشکالی نداره با Do while باشه، همین کد رو به شکل زیر روی یه کامند بنویس :
از این که اون کد رو گذاشتی ممنونم.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خوب امتحانش کن فکر نکنم مشکلی داشته باشه.
واقعا دستت درد نکنه مجید جان
خیر ببینی جون
یکم توضیش می دی ؟
که فردا ضایع نشیم
من چیزی ازش نفهمیدم
خیلی حال کردم
[/SIZE]کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توی خط اول همونجور که میدونی اومدیم و یه عدد از کاربر گرفتیم.
توسط دستور حلقه ی 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 !!!
فکر کنم متوجه شدی ... اگه نشدی بازم واست توضیح بدم.
از این که اینقدر توضیح دادم ببخشید، خواستم متوجه کد بشی.![]()
دستت واقعا درد نکنه
امشب ما رو واقعا شرمنده کردی
ولی این حلقه ها هم دنیایی دارن
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)