دو سوال در رابطه با Until,While,For درVB

Milad_ATM

New Member
سلام . من يه تازه كارم.
2 تا سوال دارم كه واسه شما پيش پا افتاده اما واسه خودم ...

1-برنامه اي بنويسيد كه تعداد اعدادي كه بر 3 و 4 بخشپذيرند و درمحدوده 200 تا300 هستند را چاپ كند .با While يا Unti نوشته شود
2-برنامه اي بنويسيد كه مجموع وميانگين اعدادفرد بين 100 و 500 را چاپ كند. با(For.Until,While)

اگه حوصله داشتد يه توضيحات كوچيكي هم بديد ... .متشكرم
 
آخرین ویرایش:

the_king

مدیرکل انجمن
سلام . من يه تازه كارم.
1-برنامه اي بنويسيد كه تعداد اعدادي كه بر 3 و 4 بخشپذيرند و درمحدوده 200 تا300 هستند را چاپ كند .با While يا Unti نوشته شود

اعدادی که بر 3 و 4 بخش پذیر باشند بر 12 بخش پذیرند ولی برای حفظ خوانایی برنامه، همان دو عدد 3 و 4 را در نظر
می گیریم و نه 12.

ما یک متغیر به نام count خواهیم داشت با مقدار اولیه 0 که تعداد اعداد بخشپذیر بر 3 و 4 را بشمارد.
وضعیت (i Mod 3 = 0) And (i Mod 4 = 0) زمانی برقرار است که باقیمانده تقسیم عدد i بر 3 و 4 صفر باشد.
عملگر باقیمانده هم که Mod است. (هر گاه عدد x بر y بخشپذیر باشد، باقیمانده تقسیم x بر y صفر است)
شرط While i <= 300 تا زمانی برقرار است که i از 300 بیشتر نشود وگرنه از حلقه خارج می شود.
می توانستیم بجای While i <= 300 از Until i > 300 هم استفاده کنیم، یعنی ایندو معادل هم اند.
در انتها هم باید با یک پیغام توسط فرمان MsgBox مقدار count را اعلام کنیم.

کد:
Private Sub Form_Load()
    Dim i As Long, count As Long
    i = 200
    count = 0
    Do While i <= 300
        If (i Mod 3 = 0) And (i Mod 4 = 0) Then
            count = count + 1
        End If
        i = i + 1
    Loop
MsgBox "Count of numbers = " & count
    End
End Sub
 

the_king

مدیرکل انجمن
2-برنامه اي بنويسيد كه مجموع و ميانگين اعداد فرد 100 و 500 را چاپ كند. با(For.Until,While)

تصور می کنم که منظورتان اعداد فرد بین 100 و 500 باشد و صورت سوال را اشتباه نوشته اید،
چون دو عدد 100 و 500 که خودشان فرد نیستند و مجموع دو عدد هم نیازی به حلقه تکرار ندارد.

اعدادی فرد هستند که زوج نباشند، یعنی بر دو بخشپذیر نباشند و در نتیجه باقیمانده تقسیم آنها بر 2 برابر 1 باشد (و نه صفر)
وضعیت شرطی i Mod 2 = 1 زمانی برقرار است که عدد i فرد باشد.
ما یک متغیر sum با مقدار اولیه صفر خواهیم داشت که مجموع اعداد فرد در آن قرار می گیرد.
ما از متغیر count برای شمردن تعداد اعداد فرد و محاسبه میانگین آنها استفاده می کنیم.
در فرمان MsgBox از یک مقدار ثابت به نام vbNewLine استفاده شده است، که باعث نوشته شدن ادامه متن در یک سطر
جدید (سطر بعدی) می شود.
شرط ادامه یافتن حلقه Do را While i <= 500 در نظر گرفتیم که معادل است با Until i > 500

کد:
Private Sub Form_Load()
    Dim i As Long, count As Long, sum As Long
    i = 100
    count = 0
    sum = 0
    Do While i <= 500
        If i Mod 2 = 1 Then
            count = count + 1
            sum = sum + i
        End If
        i = i + 1
    Loop
    MsgBox "Sum of odd numbers = " & sum & vbNewLine _
    & "Average = " & sum / count
    End
End Sub

می توانستیم بجای حلقه Do از یک For استفاده کنیم، در اینصورت بایستی آن سطر آخر حلقه (i = i + 1) را هم حذف
کنیم زیرا حلقه For بطور خودکار مقدار i را افزایش می دهد :

کد:
Private Sub Form_Load()
    Dim i As Long, count As Long, sum As Long
    i = 100
    count = 0
    sum = 0
    For i = 100 To 500
        If i Mod 2 = 1 Then
            count = count + 1
            sum = sum + i
        End If
    Next
    MsgBox "Sum of odd numbers = " & sum & vbNewLine _
    & "Average = " & sum / count
    End
End Sub
 
آخرین ویرایش توسط مدیر:

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

بالا