Другие языки программирования и технологии

Помогите Basic. Программирование. Индекс выходит за границы массива. Где ошибка?

Dim i As Integer

Dim n As String

Dim A(21) As String

For i = 1 To 21

A(1) = "Алимова"

A(2) = "Алпатов"

A(3) = "Бахматова"

A(4) = "Гасанова"

A(5) = "Гусь"

A(6) = "Евдкаимов"

A(7) = "Жолдошева"

A(8) = "Зайко"

A(9) = "Коваленко"

A(10) = "Кожевникова"

A(11) = "Кравцов"

A(12) = "Куликова"

A(13) = "Кураченко"

A(14) = "Михайлова"

A(15) = "Назаров"

A(16) = "Никулин"

A(17) = "Пинчук"

A(18) = "Сафаров"

A(19) = "Филатов"

A(20) = "Халидов"

A(21) = "Храмова"

Next

n = InputBox("напишите ученика")

If A(i) = n Then

MsgBox("Такой ученик есть")

Else

MsgBox("нет")

End If

End Sub
Merei Merei
Merei Merei
396
Visual Basic 6.0

' Нажатие кнопки на форме
Private Sub Command1_Click()

' Создаем массив 21 элемент (0-20)
Dim A(20) As String

' Заполняем массив
A(0) = "Алимова"
A(1) = "Алпатов"
A(2) = "Бахматова"
A(3) = "Гасанова"
A(4) = "Гусь"

...

A(20) = "Храмова"

' Запрос фамилии
Dim n As String
n = InputBox("Введите фамилию ученика")

' Поиск в массиве
Dim i As Integer
For i = 0 To Ubound(A)
If A(i) = n Then
MsgBox("Такой ученик есть")
Exit Sub ' досрочно выходим из процедуры
End If
Next i

' Массив перебрали, фамилии не нашли
MsgBox("Нет такого ученика")

End Sub
Александр Юдин
Александр Юдин
92 409
Лучший ответ
чему равно i в этой строке If A(i) = n Then ?
В массиве нету 21-ого элемента.
В Вашем массиве, их только 20, и нумеровать их нужно с 0, а не с 1.
Тогда всё сойдётся.
Попробуйте так:
Dim i, j As Integer
Dim n As String
Dim A As Variant
A = Array("Алимова", "Алпатов", "Бахматова", "Гасанова", "Гусь", "Евдокимов", "Жолдошева", "Зайко", "Коваленко", "Кожевникова", "Кравцов", "Куликова", "Кураченко", "Михайлова", "Назаров", "Никулин", "Пинчук", "Сафаров", "Филатов", "Халидов", "Храмова")
j = 0
n = InputBox("Напишите фамилию ученика: ")
For i = 0 To 20
If A(i) = n Then
j = i
End If
Next
If j <> 0 Then
MsgBox ("Такой ученик есть")
Else
MsgBox ("Такого ученика нет")
End If
End Sub
Доктор Хаус
Доктор Хаус
2 069