2015-01-03 2 views
0

Мне нужно сделать программу в Visual Basic, которая отображает статус 100 шкафчиков, открытых или закрытых с помощью булевого массива. Когда нажата кнопка Initialize, все шкафчики должны иметь статус opened, но при нажатии Simulate происходит процесс закрытия каждого N-го шкафчика (каждый второй шкафчик, затем каждый третий шкафчик, затем каждый 4-й шкафчик, а затем каждый 4-й шкафчик и т. Д. на).lockers array program VISUAL BASIC

У меня он работает так, что он всегда отображает opened для каждого шкафчика, но я не могу понять, как его закрыть каждый N-й шкафчик.

Вот мой код:

Public Class Form1 
    Dim index As Integer 
    Dim doors(100) As Boolean 

    Private Sub btnInitialize_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnInitialize.Click 

     Dim count As Integer 
     lstLockers.Items.Clear() 
     lstLockers.Items.Add("Locker" & vbTab & "Status") 

     For count = 1 To 100 
      doors(count) = True 

      If doors(count) = True Then 
       lstLockers.Items.Add(count & vbTab & "Opened") 
      End If 
     Next 

    End Sub 



    Private Sub btnSimulate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSimulate.Click 

     lstLockers.Items.Clear() 
     lstLockers.Items.Add("Locker" & vbTab & "Status") 

     Dim count As Integer 
     Dim eq As Integer 

     For count = 1 To 100 
      doors(count) = True 

      If doors(count) = True Then 
       lstLockers.Items.Add(count & vbTab & "Opened") 
      ElseIf doors(count) = False Then 
       lstLockers.Items.Add(count & vbTab & "Closed") 
      End If 


     Next 



    End Sub 
End Class 
+1

Общая форма оператора For: 'FOR v ar = start TO конец STEP increment'. Ожидалось, что вы будете использовать STEP. –

+0

@ HansPassant - Если это так, я могу переусердствовать в моем ответе. :) –

+0

Как я понимаю, вопрос ПоппинаВэйва, ответ Ханса - это случай. (: –

ответ

0

В вашем методе btnSimulate_Click, вы настраиваете doors индекс true, а затем сразу же проверить, если это правда или нет. Вот почему он всегда говорит opened.

Что касается закрытия каждого N-го шкафчика, вы можете сделать это с помощью простой переменной счетчика.

' n represents the "Nth" locker to close. 
Dim n As Integer = 2 
Dim progress As Integer = 0 ' Progress to n. 

For count = 1 To 100 
    ' This line shouldn't be here. doors has already been initialized. 
    'doors(count) = True 

    ' Increment progress towards n. 
    progress = progress + 1 

    ' Check if Nth interval is reached. 
    If n = progress Then 
     ' It is. Close the locker. 
     doors(count) = False 
     ' Increment n and reset the progress counter. 
     n = n + 1 
     progress = 0 
    End If 

    If doors(count) = True Then 
     lstLockers.Items.Add(count & vbTab & "Opened") 
    ElseIf doors(count) = False Then 
     lstLockers.Items.Add(count & vbTab & "Closed") 
    End If 

Next 

Это было бы закрыть шкафчики:

  • 2 (п = 2)
  • 5 (п = 3)
  • 9 (п = 4)
  • 14 (п = 5)
  • и т. Д.