Лекция: Способы обработки массивов

 

1. Нахождение суммы, произведения, среднего арифметического, среднего геометрического элементов массива.

1.1 Нахождение суммы элементов массива.

 

Sub prim6()

Dim a(), str_a, i, sum

n = Val(InputBox(«введите количество элементов массива n:»))

ReDim a(n)

For i = 0 To n

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

sum = sum + a(i)

Next i

MsgBox str_a & Chr(10) & Chr(13) & _

«sum=» & sum

End Sub

 

1.2 Нахождение суммы четных и нечетных элементов массива.

Sub prim7()

Dim a(4), str_a, i, sumchet, sumnechet

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

If a(i) Mod 2 = 0 Then sumchet = sumchet + a(i)

If a(i) Mod 2 <> 0 Then sumnechet = sumnechet + a(i)

Next i

MsgBox str_a & Chr(10) & Chr(13) & _

«sumchet=» & sumchet & «sumnechet=» & sumnechet

End Sub

 

1.3 Нахождение суммы элементов массива, значения которых находятся в интервале от 50 до 100.

Sub prim8()

Dim a(4), str_a, i, sum

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

If a(i) >= 50 And a(i) <= 100 Then sum = sum + a(i)

Next i

MsgBox str_a & Chr(10) & Chr(13) & _

«sum=» & sum

End Sub

 

1.4 Нахождение суммы элементов массива с четными индексами и суммы элементов массива с нечетными индексами.

 

Sub prim9()

Dim a(4), str_a, i, sum1, sum2

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

If i Mod 2 = 0 Then sum1 = sum1 + a(i)

If i Mod 2 <> 0 Then sum2 = sum2 + a(i)

Next i

MsgBox str_a & Chr(10) & Chr(13) & _

«sum1=» & sum1 & «sum2=» & sum2

End Sub

 

1.4 Нахождение суммы индексов четных элементов и произведения индексов нечетных элементов массива. Начальное значение произведения надо задавать равным 1.

 

Sub prim11()

Dim a(1 To 4), str_a, i, sum, pr

pr = 1

For i = 1 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

If a(i) Mod 2 = 0 Then sum = sum + i

If a(i) Mod 2 <> 0 Then pr = pr * i

Next i

MsgBox str_a & Chr(10) & Chr(13) & _

«sum=» & sum & «pr=» & pr

End Sub

2.Нахождение произведения и среднего геометрического элементов массива.

2.1 Нахождение среднего арифметического и среднего геометрического элементов массива.

Sub prim12()

Dim a(4), str_a, i, sum, pr

pr = 1

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

sum = sum + a(i)

pr = pr * a(i)

Next i

sa = sum / 5: sg = pr * (1 / 5)

MsgBox str_a & Chr(10) & Chr(13) & _

«sa=» & sa & «sg=» & sg

End Sub

 

 

2.2 Задан массив а(4), найти индексы тех элементов, значения которых превосходят цифру 50.

 

Sub prim13()

Dim a(4), str_a, i, str_b, b(4)

pr = 1

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

If a(i) > 50 Then

b(i) = i

str_b = str_b & b(i) & " "

End If

Next i

MsgBox «исходный массив:» & str_a & Chr(10) & Chr(13) & _

«массив индексов:» & str_b

End Sub

3 Обработка элементов массива.

3.1 Задан массив а(4), значения элементов которого заданы генератором случайных чисел, заменить единицами, те элементы, значения которых превосходят 50.

 

Sub prim14()

Dim a(4), str_a, i, str_anew

pr = 1

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

If a(i) > 50 Then a(i) = 1

str_anew = str_anew & a(i) & " "

Next i

MsgBox «исходный массив:» & str_a & Chr(10) & Chr(13) & _

«новый массив:» & str_anew

End Sub

3.2 Нахождение максимального и минимального элементов массива и обмен их местами.

Sub prim15()

Dim a(4), str_a, i, str_anew, max, min, imax, imin

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

Next i

max = a(0): imax = 0: min = a(0): imin = 0

For i = 1 To 4

If a(i) > max Then max = a(i): imax = i

If a(i) < min Then min = a(i): imin = i

Next i

a(imax) = min: a(imin) = max

For i = 0 To 4

str_anew = str_anew & a(i) & " "

Next i

MsgBox «исходный массив:» & str_a & Chr(10) & Chr(13) & _

«max=» & max & «imax=» & imax & Chr(10) & Chr(13) & _

«min=» & min & «imin=» & imin & Chr(10) & Chr(13) & _

«новый массив:» & str_anew

End Sub

3.2 Подсчет количества элементов массива, например больших 50.

Sub prim17()

Dim a(4), str_a, i, str_anew, k

k = 0

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

If a(i) > 50 Then k = k + 1

str_anew = str_anew & a(i) & " "

Next i

MsgBox «исходный массив:» & str_a & Chr(10) & Chr(13) & _

«k=» & k

End Sub

 

3.3 Обработка двух массивов.

Заданы два массива a(4) и b(4) заполнить их случайными значениями и поменять местами четвертые элементы массивов.

Sub prim16()

Dim a(4), b(4), str_a, str_b, i, str_anew, str_bnew, buf

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

b(i) = Int(Rnd * 10) + 1

str_b = str_b & b(i) & " "

Next i

buf = a(4)

a(4) = b(4)

b(4) = buf

For i = 0 To 4

str_anew = str_anew & a(i) & " "

str_bnew = str_bnew & b(i) & " "

Next i

MsgBox «исходный массив a:» & str_a & Chr(10) & Chr(13) & _

«исходный массив b:» & str_b & Chr(10) & Chr(13) & _

«новый массив a:» & str_anew & imin & Chr(10) & Chr(13) & _

«новый массив b:» & str_bnew

End Sub

 

3.3 Обработка элементов массива в блоках разветвления и циклов.

Структура программы:

1. Заголовок.

2. Описание переменных.

3. Ввод элементов массива (или массивов).

4. Условие.

5. Инструкции, если Условие выполняется.

6. Инструкции, если Условие не выполняется.

7. Вывод результата.

 

Пример: Заданы два массива a(4) и b(4), если количество отрицательных элементов массива a(4) больше количества отрицательных массива b(4), то положительные элементы массива a(4) заменить на 1, а положительные элементы массива b(4) заменить на нули.

 

Sub prim18()

Dim a(4), b(4), str_a, str_b, i, str_anew, str_bnew, k, t, sum, pr

k = 0: t = 0: pr = 1

For i = 0 To 4

a(i) = Int(Rnd * 100) — 50

str_a = str_a & a(i) & " "

b(i) = Int(Rnd * 10) — 5

str_b = str_b & b(i) & " "

If a(i) < 0 Then k = k + 1

If b(i) < 0 Then t = t + 1

Next i

If k > t Then

For i = 0 To 4

If a(i) > 0 Then a(i) = 1

If b(i) > 0 Then b(i) = 0

str_anew = str_anew & a(i) & " "

str_bnew = str_bnew & b(i) & " "

Next i

MsgBox «исходный массив a:» & str_a & Chr(10) & Chr(13) & _

«исходный массив b:» & str_b & Chr(10) & Chr(13) & _

«новый массив a:» & str_anew & imin & Chr(10) & Chr(13) & _

«новый массив b:» & str_bnew & imin & Chr(10) & Chr(13) & _

«k=» & k & «t=» & t

Else

For i = 0 To 4

sum = sum + a(i): pr = pr * b(i)

Next i

MsgBox «исходный массив a:» & str_a & Chr(10) & Chr(13) & _

«исходный массив b:» & str_b & Chr(10) & Chr(13) & _

«sum=» & sum & «pr=» & pr & Chr(10) & Chr(13) & _

«k=» & k & «t=» & t

End If

End Sub

 

3.4 Просмотр диапазона ячеек рабочего листа с помощью объекта Sheets (рабочие листы) и метода Range для доступа к ячейкам.

 

Пример. Написать программу для заполнения ячеек рабочего листа и вывести общую сумму.

Sub pr61()

Dim i, n, x, sum, str_x As String

n = Val(InputBox(«введите n:»))

i = 1: sum = 0

For i = 1 To n

x = Int(Rnd * 100) + 1

str_x = str_x & x & " "

sum = sum + x

Sheets(«лист 1»).Cells(i, 3).Value = x

Sheets(«лист 1»).Cells(5, 4) = sum

Next i

End Sub

3.5 Заполнение элементов массива значениями рабочего листа.

Sub pr()

Dim i As Integer,mass(), str_mass 'переменная для элементов массива

ReDim mass(10)

For i = 1 To 10

Sheets(«лист1»).Cells(1, i).Value = Int(100 * Rnd + 1)

mass(i) = Sheets(«лист1»).Cells(1, i).Value

str_mass = str_mass & mass(i) & " " 'накопление элементов массива для ‘вывода заполненных значений

Next i

MsgBox str_mass

End Sub

(1,i) – первая цифра строка, вторая столбец.

еще рефераты
Еще работы по информатике