راهنمایی در مورد حلقه While Wend

khag

New Member
یه سوال : البته با راهنمایی ممنون میشم
با حلقه While Wend به چه صورت میشه یه عدد را برعکس نوشت مثلا عدد 789 را به 987 تغییر پیدا کند؟
البته با توضیح ممنون میشم !!!!
 

the_king

مدیرکل انجمن
یه سوال : البته با راهنمایی ممنون میشم
با حلقه While Wend به چه صورت میشه یه عدد را برعکس نوشت مثلا عدد 789 را به 987 تغییر پیدا کند؟
البته با توضیح ممنون میشم !!!!

اعداد رو با روش های متفاوتی میشه معکوس کرد، روش زیر با دریافت متوالی باقیمانده تقسیم عدد بر 10 است :
کد:
Private Sub Form_Load()
    Dim n As Long, m As Long
    n = 789
    m = 0
    While n > 0
       m = m * 10 + (n Mod 10)
       n = n \ 10
    Wend
    MsgBox m
    End
End Sub

یک متغیر n برای عدد اصلی و یک متغیر m برای محاسبه کردن معکوس آن تعریف می کنیم :
کد:
    Dim n As Long, m As Long

مقدار مورد نظر n را بصورت دستی مشخص کردم :
کد:
    n = 789

مقدار m را صفر قرار می دهیم چون اگر عدد n برابر 0 باشد، هیچ عملیات دیگری برای تعیین کردن مقدار m
انجام نخواهد شد :
کد:
    m = 0

تا زمانی که عدد n بزرگتر از 0 باشد، حلقه اجرا خواهد شد. اگر n از صفر بزرگتر باشد، مفهوم آن این است که
رقم یا رقم هایی در n وجود دارد که بایستی معکوس شود :
کد:
    While n > 0

اولین رقم سمت راست n (رقم یکان) را با محاسبه کردن باقیمانده تقسیم n بر 10 محاسبه می کنیم (n Mod 10) و
سپس عدد موجود در m را 10 برابر می کنیم تا رقم یکان اش برای قرار دادن رقم یکان n خالی (صفر) شود و سپس
آندو را با هم جمع می کنیم :
کد:
       m = m * 10 + (n Mod 10)

یک رقم از سمت راست n را حذف می کنیم، این عمل با تقسیم صحیح (\) مقدارش بر 10 حاصل می شود، چون
در تقسیم صحیح، قسمت های اعشاری تقسیم حذف می گردد :
کد:
       n = n \ 10

اجرای حلقه را آنقدر ادامه می دهیم که مقدار n به صفر برسد و دیگر رقمی برای معکوس کردن در آن نمانده باشد.
کد:
    Wend

عدد حاصل معکوس شده در m را نمایش می دهیم :
کد:
    MsgBox m

در انتها با فرمان End اجرای برنامه را خاتمه می دهیم :
کد:
    End
 

khag

New Member
اعداد رو با روش های متفاوتی میشه معکوس کرد، روش زیر با دریافت متوالی باقیمانده تقسیم عدد بر 10 است :
کد:
private sub form_load()
    dim n as long, m as long
    n = 789
    m = 0
    while n > 0
       m = m * 10 + (n mod 10)
       n = n \ 10
    wend
    msgbox m
    end
end sub

یک متغیر n برای عدد اصلی و یک متغیر m برای محاسبه کردن معکوس آن تعریف می کنیم :
کد:
    dim n as long, m as long

مقدار مورد نظر n را بصورت دستی مشخص کردم :
کد:
    n = 789

مقدار m را صفر قرار می دهیم چون اگر عدد n برابر 0 باشد، هیچ عملیات دیگری برای تعیین کردن مقدار m
انجام نخواهد شد :
کد:
    m = 0

تا زمانی که عدد n بزرگتر از 0 باشد، حلقه اجرا خواهد شد. اگر n از صفر بزرگتر باشد، مفهوم آن این است که
رقم یا رقم هایی در n وجود دارد که بایستی معکوس شود :
کد:
    while n > 0

اولین رقم سمت راست n (رقم یکان) را با محاسبه کردن باقیمانده تقسیم n بر 10 محاسبه می کنیم (n mod 10) و
سپس عدد موجود در m را 10 برابر می کنیم تا رقم یکان اش برای قرار دادن رقم یکان n خالی (صفر) شود و سپس
آندو را با هم جمع می کنیم :
کد:
       m = m * 10 + (n mod 10)

یک رقم از سمت راست n را حذف می کنیم، این عمل با تقسیم صحیح (\) مقدارش بر 10 حاصل می شود، چون
در تقسیم صحیح، قسمت های اعشاری تقسیم حذف می گردد :
کد:
       n = n \ 10

اجرای حلقه را آنقدر ادامه می دهیم که مقدار n به صفر برسد و دیگر رقمی برای معکوس کردن در آن نمانده باشد.
کد:
    wend

عدد حاصل معکوس شده در m را نمایش می دهیم :
کد:
    msgbox m

در انتها با فرمان end اجرای برنامه را خاتمه می دهیم :
کد:
    end

مهندس اگه به جای عددی که داریم به فرض مثال عدد از کاربر بگیره و بعد معکوس کنه به چه صورت میشه ؟
و سوال دوم اینکه از کجا باید بفهم باید Mod اون رو باید محاسبه کنیم ؟
و خواهشی که دارم یه نمونه سوال بده نگاه کنم می تونم حلش کنم ....
 
آخرین ویرایش:

Member
من برنامه نویسی بلد نیستم ولی فکر کنم اگه طول استرینگ رو بگیری و بعد یکی یکی از آخر برداری توی یه متغیر سیو کنی و دست آخر متغیر ها رو به هم بچسبونی ورودیت هرچی باشه برعکس میشه و نیاز به فرمول ریاضی نداری
البته با استفاده از حلقه for
 

the_king

مدیرکل انجمن
مهندس اگه به جای عددی که داریم به فرض مثال عدد از کاربر بگیره و بعد معکوس کنه به چه صورت میشه ؟
خیلی ساده، کد سطر n = 789 رو با کد زیر تعویض کنید :
کد:
n = Val(InputBox("Please enter n :", ""))

و سوال دوم اینکه از کجا باید بفهم باید Mod اون رو باید محاسبه کنیم ؟
شما باید آن روشی که خودتان برای حل یک مساله بکار می برید را بصورت خیلی دقیق و مو به مو به کامپیوتر
و به زبان ریاضی منتقل کنید. خودتان برای بدست آوردن اولین رقم سمت راست یک عدد در ریاضی از چه فرمولی
استفاده می کنید؟ فرض کنیم عدد مورد نظر 123 است و باید رقم 3 را جدا کرد :

مرحله اول : ابتدا عدد را بر 10 تقسیم می کنیم که می شود 12.3
مرحله دوم : سپس اعشار را از حاصل تقسیم حذف می کنیم که می شود 12
مرحله سوم : سپس عدد حاصل را در 10 ضرب می کنیم که می شود 120
مرحله چهارم : حالا عدد حاصل را از عدد اولیه کسر می کنیم که می شود 3 که عدد مورد نظر ما است.

تمامی چهار مرحله بالا در ریاضی تحت عنوان عملگر باقیمانده صحیح شناخته می شود که در ویژوال بیسیک
توسط Mod اجرا می گردد.

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

من برنامه نویسی بلد نیستم ولی فکر کنم اگه طول استرینگ رو بگیری و بعد یکی یکی از آخر برداری توی یه متغیر سیو کنی و دست آخر متغیر ها رو به هم بچسبونی ورودیت هرچی باشه برعکس میشه و نیاز به فرمول ریاضی نداری
البته با استفاده از حلقه for
صد البته، حق با شما است. همانطور که در ابتدا هم اشاره کردم روش های بسیاری برای معکوس کردن یک عدد
وجود دارد :
کد:
Private Sub Form_Load()
    Dim n As Long, m As Long
    n = 789
    m = Val(StrReverse(CStr(n)))
    MsgBox m
End Sub
 

جدیدترین ارسال ها

بالا