Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования в VBA-заставки.doc
Скачиваний:
4
Добавлен:
04.11.2018
Размер:
3.64 Mб
Скачать

Элемента и его номера

Max = X(1)

Nom = 1

For i = 2 To n

If X(i) > Max Then

Max = X(i)

Nom = i

End If

Next

MsgBox "Max=" & Max

& Chr(13) & "Nom=" & Nom

Удаление элемента из массива

Пусть необходимо удалить из массива, состоящего из семи элементов, четвертый по номеру элемент.

Номера элементов

1

2

3

4

5

6

7

Исходный массив

4

7

3

8

9

2

5

Полученный массив

4

7

3

9

2

5

5

m = InputBox("n=")

For i = m To n - 1

X(i) = X(i + 1)

Next

For i = 1 To n - 1

Cells(i, 2) = X(i)

Next

Упорядочение элементов массива

Сортировка методом пузырька

Номер элемента

1

2

3

4

5

Исходный массив

7

3

5

4

2

Первый просмотр

3

5

4

2

7

Второй просмотр

3

4

2

5

7

Третий просмотр

3

2

4

5

7

Четвертый просмотр

2

3

4

5

7

Sub sort()

Dim n As Integer

Dim i As Integer, j As Integer

Dim Y(1 To 10) As Single

n = InputBox("n=", , 10)

For i = 1 To n

Y(i) = Cells(i, 1)

Next

For j = 1 To n - 1

For i = 1 To n - j

If Y(i) > Y(i + 1) Then

b = Y(i + 1)

Y(i + 1) = Y(i)

Y(i) = b

End If

Next i

Next j

For i = 1 To n

Cells(i, 2) = Y(i)

Next

25. Примеры программ

ЗАДАЧА 9. Найти среднее значение положительных элементов в массиве.

Sub prim()

Dim i As Integer

Dim N As Integer

Dim k As Integer

Dim S As Integer

Dim X(1 To 20) As Integer

N = InputBox("N=", , 10)

For i = 1 To N

X(i) = Cells(i, 1)

Next

S = 0

k = 0

For i = 1 To N

If X(i) > 0 Then

S = S + X(i)

k = k + 1

End If

Next

If k <> 0 Then

S = S / k

MsgBox "S=" & S

Else

MsgBox "ERROR!!!"

End If

End Sub

ЗАДАЧА 10. Дан массив А состоящий из k целых положительных чисел. Записать все четные по значению элементы массива А в массив В.

Sub prim_10()

Dim i As Integer

Dim m As Integer

Dim k As Integer

Dim A(1 To 20) As Integer

Dim B(1 To 20) As Integer

k = InputBox("k=", , 10)

For i = 1 To k

A(i) = Cells(1, i + 1)

Next

m = 0

For i = 1 To k

If A(i) Mod 2 = 0 Then

m = m + 1

B(m) = A(i)

End If

Next

If m <> 0 Then

For i = 1 To m

Cells(2, i + 1) = B(i)

Next

Else

MsgBox "ERROR!!!"

End If

End Sub

ЗАДАЧА 11. Удалить из массива X, состоящего из N элементов, наименьший элемент.

Sub prim_11()

Dim i As Integer

Dim N As Integer

Dim nom As Integer

Dim max As Integer

Dim X(1 To 20) As Integer

N = InputBox("N=", , 10)

For i = 1 To N

X(i) = Cells(1, i)

Next

max = X(1)

nom = 1

For i = 2 To N

If X(i) > max Then

max = X(i)

nom = i

End If

Next

For i = nom To N - 1

X(i) = X(i + 1)

Next

For i = 1 To N - 1

Cells(2, i) = X(i)

Next

End Sub

ЗАДАЧА 12. Проверить содержит ли массив X, состоящий из N элементов, хотябы один нулевой элемент. Если содержит, то поменять его местами с последним элементом массива.

Sub prim_12()

Dim i As Integer

Dim N As Integer

Dim nom As Integer

Dim b As Integer

Dim X(1 To 20) As Integer

N = InputBox("N=", , 10)

For i = 1 To N

X(i) = Cells(1, i)

Next

nom = 0

For i = 1 To N

If X(i) = 0 Then

nom = i

Exit For

End If

Next

If nom <> 0 Then

b = X(nom)

X(nom) = X(N)

X(N) = b

For i = 1 To N

Cells(2, i) = X(i)

Next

Else

MsgBox "NO!!!"

End If

End Sub

ЗАДАЧА 13. Вычислить сумму элементов массива X(N) расположенных между минимумом и максимумом.

Sub prim_13()

Dim i As Integer

Dim N As Integer

Dim nMax As Integer

Dim max As Single

Dim nMin As Integer

Dim min As Single

Dim S As Single

Dim X(1 To 20) As Single

N = InputBox("N=", , 10)

For i = 1 To N

X(i) = Cells(1, i)

Next

max = X(1)

nMax = 1

For i = 2 To N

If X(i) > max Then

max = X(i)

nMax = i

End If

Next

min = X(1)

nMin = 1

For i = 2 To N

If X(i) < min Then

min = X(i)

nMin = i

End If

Next

If nMax < nMin Then

b = nMax

nMax = nMin

nMin = b

End If

S = 0

For i = nMin To nMax

S = S + X(i)

Next

MsgBox "S=" & S

End Sub

ЗАДАЧА 14. Вычислить сумму элементов массива X(N) с четными индексами и произведение с нечетными.

Sub prim_14()

Dim i As Integer

Dim N As Integer

Dim P As Integer

Dim S As Integer

Dim X(1 To 20) As Integer

N = InputBox("N=", , 10)

For i = 1 To N

X(i) = Cells(i, 1)

Next

S = 0

For i = 2 To N Step 2

S = S + X(i)

Next

MsgBox "S=" & S

P = 1

For i = 1 To N Step 2

P = P * X(i)

Next

MsgBox "P=" & P

End Sub