ورود

نسخه کامل مشاهده نسخه کامل : برنامه ی مجموع ارقام ( حلقه ها )



mohsen_3
17-02-2009, 19:04
فردا باید یه برنامه بنویسم که اگه مثلا وارد کردی 123
پرینت کنه 6 (1+2+3)
با حلقه هم باید باشه
تا چند رقمشم معلوم نیست

3Dmajid
17-02-2009, 19:35
یادمه ما هم همچین سوالی داشتیم، اگه تعداد رقم ها از قبل معلوم باشه خیلی خیلی راحته مثل کد زیر :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

که البته شاید خودت هم بلد باشی، اگه تعداد رقم ها هم معلوم نباشه توسط تابع های رشته ای میشه به راحتی این کار رو کرد ولی تو میگی از طریق حلقه ی فور !! یه کم باید روش فکر کرد.
یادمه یه زمانی نوشتم ولی باید فکر کنم تا یادم بیاد.

mohsen_3
17-02-2009, 19:45
اقا من فکر کردم ولی به نتیجه ای نرسیدم
جون من یه کاریش کنید
فردا باید ببرم
می تونیم اون 10 و 100 رو با حلقه هی کم کنیم ولی یه جا باید ولی باید توی یه متغیر ذخیره کنیم

3Dmajid
17-02-2009, 19:53
مطمئنم که مسئله ی آسونیه ... ولی یادم نمیاد چه جوری بود.

زنگ میزنم به چند تا از رفیقام اگه بلد بودن بهم بگن، منم واست مینویسم.

mohsen_3
17-02-2009, 19:56
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

اینو پیدا کردم کار می کنه با حلقه ها هم هست ولی برعکس می کنه عددو خیلی پیچیده یکی یکم توضیحش بده

3Dmajid
17-02-2009, 20:30
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

کسی که این برنامه رو نوشته خودش یه تابع برای بر عکس کردن عدد نوشته و توسط یک کامند اون تابع رو اجرا کرده.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بعد اومده عددی رو که کاربر وارد میکنه رو تقسیم بر 10 کرده تا بدین شکل دونه دونه اعدادش رو جدا کنه، بعدش اعداد رو پیش هم به صورت بر عکس (از آخر به اول) مینویسه تا بر عکس بشه.
ولی این به دردت نمیخوره، چون کاربر محدوده و فقط میتونه عدد 2 رقمی وارد کنه ولی تو میگی که کاربر با هر طولی عددی رو وارد کنه حساب کنه.
این تقریبا کارش همون کد بالاییه که برات نوشتم با این تفاوت که اومده یگان و دهگان رو بر عکس نوشته تا عدد رو بر عکس کنه.

3Dmajid
17-02-2009, 20:38
مشکل حل شد [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

چرا زودتر نگفتی که اشکالی نداره با Do while باشه، همین کد رو به شکل زیر روی یه کامند بنویس :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

از این که اون کد رو گذاشتی ممنونم.
خوب امتحانش کن فکر نکنم مشکلی داشته باشه.

mohsen_3
17-02-2009, 20:42
واقعا دستت درد نکنه مجید جان
خیر ببینی جون
یکم توضیش می دی ؟
که فردا ضایع نشیم
من چیزی ازش نفهمیدم
خیلی حال کردم

3Dmajid
17-02-2009, 20:55
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید[/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 !!!

فکر کنم متوجه شدی ... اگه نشدی بازم واست توضیح بدم.
از این که اینقدر توضیح دادم ببخشید، خواستم متوجه کد بشی. :10:

mohsen_3
17-02-2009, 21:03
دستت واقعا درد نکنه
امشب ما رو واقعا شرمنده کردی
ولی این حلقه ها هم دنیایی دارن

3Dmajid
17-02-2009, 21:07
دستت واقعا درد نکنه
امشب ما رو واقعا شرمنده کردی
ولی این حلقه ها هم دنیایی دارن


خواهش میکنم، دشمنت شرمنده.
همه ی ما وظیفه داریم تا وقتی یه مشکلی برای یکی از دوستامون پیش میاد، تا اونجایی که میتونیم کمکش کنیم.
من فقط به وظیفه م عمل کردم ، بنابراین دیگه نگو مارو شرمنده کردی که خیلی ناراحت میشم :10: