Скачиваний:
0
Добавлен:
30.09.2018
Размер:
31.91 Кб
Скачать

1.В одномерном массиве из положительных и отрицательных чисел найти максимальное отрицательное число (ближайшее к нулю) и его место в массиве.

Sub zadacha1()

Dim m(1 To 5) As Integer

Randomize Timer

For i = 1 To 5

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходный массив"

For i = 1 To 5

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv1(m())

End Sub

Sub cv1(m1() As Integer)

max = -10000

For i = 1 To 5

If m1(i) < 0 And m1(i) > max Then max = m1(i): k = i

Next i

If max = -10000 Then Debug.Print "в массиве нет отрицательных чисел" Else Debug.Print "Максимальное отрицательное "; max; " место в массиве"; k

End Sub

2.В одномерном массиве из положительных и отрицательных чисел найти отрицательные числа и их сумму и вывести на экран.

Sub zadacha2()

Dim m(1 To 5) As Integer

Randomize Timer

For i = 1 To 5

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходный массив"

For i = 1 To 5

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv2(m())

End Sub

Sub cv2(m1() As Integer)

s = 0

For i = 1 To 5

If m1(i) < 0 Then Debug.Print "отрицательное число массва "; m1(i): s = s + m1(i)

Next i

If s = 0 Then Debug.Print "нету отрицательных чисел" Else Debug.Print "их сумма "; s

End Sub

3.В одномерном массиве из положительных и отрицательных чисел найти четные положительные числа и их сумму.

Sub zadacha3()

Dim m(1 To 5) As Integer

Randomize Timer

For i = 1 To 5

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 5

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv3(m())

End Sub

Sub cv3(m1() As Integer)

s = 0

For i = 1 To 5

If m1(i) > 0 And m1(i) Mod 2 = 0 Then Debug.Print "четноеположительноечисломассва "; m1(i): s = s + m1(i)

Next i

Debug.Print "ихсумма "; s

End Sub

4.В одномерном массиве из положительных и отрицательных чисел упорядочить по возрастанию нечетные отрицательные числа.

Sub zadacha4()

Dim m(1 To 10) As Integer

Randomize Timer

For i = 1 To 10

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 10

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv4(m())

End Sub

Sub cv4(m1() As Integer)

For i = 1 To 10

For j = 1 To 10

If (m1(i) / 2) <> Int(m1(i) / 2) And (m1(j) / 2) <> Int(m1(j) / 2) Then

If m1(i) < 0 And m1(j) < 0 And m1(i) < m1(j) Then

x = m1(i)

m1(i) = m1(j)

m1(j) = x

End If

End If

Next j

Next i

Debug.Print " массив"

For i = 1 To 10

Debug.Print m1(i);

Next i: Debug.Print: Debug.Print

End Sub

5.В одномерном массиве из положительных и отрицательных чисел найти числа, попадающие в указанный диапазон и их сумму.

Sub zadacha5()

Dim m(1 To 10) As Integer

Randomize Timer

For i = 1 To 10

m(i) = Int(Rnd() * 100) - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 10

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv5(m())

End Sub

Sub cv5(m1() As Integer)

s = 0

a = InputBox("Задайтедиапазон [a;b] Введите a-")

b = InputBox("Задайтедиапазон [a;b] Введите b-")

Debug.Print "a="; a, "b="; b

For i = 1 To 10

If m1(i) >= a And m1(i) <= b Then

d = m1(i)

s = s + d

Debug.Print "Число из диапазона [a;b] - "; d

End If

Next i

Debug.Print "сумма "; s

End Sub

6.В одномерном массиве из положительных и отрицательных чисел найти четные числа, попадающие в указанный диапазон и их произведение.

Sub zadacha6()

Dim m(1 To 10) As Integer

Randomize Timer

For i = 1 To 10

m(i) = Int(Rnd() * 100) - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 10

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv6(m())

End Sub

Sub cv6(m1() As Integer)

p = 1

a = InputBox("Задайтедиапазон [a;b] Введите a-")

b = InputBox("Задайтедиапазон [a;b] Введите b-")

Debug.Print "a="; a, "b="; b

For i = 1 To 10

If m1(i) >= a And m1(i) <= b And m1(i) Mod 2 = 0 Then

d = m1(i)

p = p * d

Debug.Print "Число из диапазона [a;b] - "; d

End If

Next i

Debug.Print "произведение "; p

End Sub

7.В одномерном массиве из положительных и отрицательных чисел каждое второе нечетное число умножить на 2.

Sub zadacha7()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходный массив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv7(m())

End Sub

Sub cv7(m1() As Integer)

k = 0

For i = 1 To 8

If m1(i) Mod 2 <> 0 Then k = k + 1

If m1(i) Mod 2 <> 0 And k = 2 Then m1(i) = m1(i) * 2: k = 0

Next i

Debug.Print "Получившийся массив"

For i = 1 To 8

Debug.Print m1(i);

Next i: Debug.Print: Debug.Print

End Sub

8.В одномерном массиве из положительных и отрицательных чисел каждое второе отрицательное нечетное число умножить на 3.

Sub zadacha8()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходный массив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv8(m())

End Sub

Sub cv8(m1() As Integer)

k = 0

For i = 1 To 8

If m1(i) Mod 2 <> 0 And m1(i) < 0 Then k = k + 1

If m1(i) Mod 2 <> 0 And m1(i) < 0 And k = 2 Then m1(i) = m1(i) * 3: k = 0

Next i

Debug.Print "Получившийся массив"

For i = 1 To 8

Debug.Print m1(i);

Next i: Debug.Print: Debug.Print

End Sub

9.В одномерном массиве из положительных и отрицательных чисел второе положительное число умножить на второе отрицательное число.

Sub zadacha9()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходный массив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv9(m())

End Sub

Sub cv9(m1() As Integer)

k = 0

a = 0

s = -1000

p = -1000

For i = 1 To 8

If m1(i) > 0 Then k = k + 1

If m1(i) > 0 And k = 2 Then s = m1(i)

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

If m1(i) < 0 And a = 2 Then p = m1(i)

Next i

If s = -1000 Or p = -1000 Then Debug.Print "нет необходимых данных для вычисления" Else pr = s * p: Debug.Print "Произведение "; pr

End Sub

10.Одномерный массив из положительных и отрицательных чисел сдвинуть вправо на 2 позиции.

Sub zadacha10()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходный массив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv10(m())

End Sub

Sub cv10(m1() As Integer)

k = 0

While k <> 2

n = m1(8)

For i = 8 To 2 Step -1

m1(i) = m1(i - 1)

Next i

m1(1) = n

k = k + 1

Wend

Debug.Print "Исходный массив"

For i = 1 To 8

Debug.Print m1(i);

Next i: Debug.Print: Debug.Print

End Sub

11.Одномерный массив из положительных и отрицательных чисел сдвинуть влево на 3 позиции.

Sub zadacha11()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходный массив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv11(m())

End Sub

Sub cv11(m1() As Integer)

k = 0

While k <> 3

n = m1(1)

For i = 2 To 8

m1(i - 1) = m1(i)

Next i

m1(8) = n

k = k + 1

Wend

Debug.Print "Исходный массив"

For i = 1 To 8

Debug.Print m1(i);

Next i: Debug.Print: Debug.Print

End Sub

12.В одномерном массиве из положительных и отрицательных чисел отсортировать по возрастанию нечетные элементы.

Sub zadacha12()

Dim m(1 To 10) As Integer

Randomize Timer

For i = 1 To 10

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 10

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv12(m())

End Sub

Sub cv12(m() As Integer)

For i = 1 To 10

For j = i + 1 To 10

If m(i) Mod 2 <> 0 And m(j) Mod 2 <> 0 And m(j) < m(i) Then

a = m(i)

m(i) = m(j)

m(j) = a

End If

Next j

Next i

Debug.Print "Конечныймассив"

For i = 1 To 10

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

End Sub

13.В одномерном массиве из положительных и отрицательных чисел отсортировать по убыванию отрицательные элементы.

Sub zadacha13()

Dim m(1 To 10) As Integer

Randomize Timer

For i = 1 To 10

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 10

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv13(m())

End Sub

Sub cv13(m() As Integer)

For i = 1 To 9

For j = i + 1 To 10

If m(i) < 0 Then

If m(j) < 0 Then

If m(j) > m(i) Then

a = m(i)

m(i) = m(j)

m(j) = a

End If

End If

End If

Next j

Next i

Debug.Print "Конечныймассив"

For i = 1 To 10

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

End Sub

14.В одномерном массиве из положительных и отрицательных чисел отсортировать по возрастанию положительные нечетные элементы.

Sub zadacha14()

Dim m(1 To 10) As Integer

Randomize Timer

For i = 1 To 10

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 10

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv14(m())

End Sub

Sub cv14(m1() As Integer)

For i = 1 To 9

For j = i + 1 To 10

If m1(i) > 0 And m1(i) Mod 2 <> 0 Then

If m1(j) > 0 And m1(j) Mod 2 <> 0 Then

If m1(j) < m1(i) Then

a = m1(i)

m1(i) = m1(j)

m1(j) = a

End If

End If

End If

Next j

Next i

Debug.Print "Конечныймассив"

For i = 1 To 10

Debug.Print m1(i);

Next i: Debug.Print: Debug.Print

End Sub

15.В одномерном массиве из положительных и отрицательных чисел найти максимальное четное число и его место в массиве.

Sub zadacha15()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv15(m())

End Sub

Sub cv15(m1() As Integer)

max = -10000

For i = 1 To 8

If m1(i) Mod 2 = 0 And m1(i) > max Then max = m1(i): k = i

Next i

If max = -10000 Then Debug.Print "нетучетныхчиел" Else Debug.Print "Максимальноечетное "; max, "егоместо"; k

End Sub

16.В одномерном массиве из положительных и отрицательных чисел найти произведение максимального четного и максимального нечетного числа.

Sub zadacha16()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv16(m())

End Sub

Sub cv16(m1() As Integer)

max = -10000

maxi = -10000

For i = 1 To 8

If m1(i) Mod 2 = 0 And m1(i) > max Then max = m1(i)

If m1(i) Mod 2 <> 0 And m1(i) > maxi Then maxi = m1(i)

Next i

If max = -10000 Or maxi = -10000 Then Debug.Print "нетутребуемыхчисел" Else p = max * maxi: Debug.Print "Произведение "; p

End Sub

17.В одномерном массиве из положительных и отрицательных чисел максимальное четное и максимальное нечетное число поменять местами.

Sub zadacha17()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv17(m())

End Sub

Sub cv17(m1() As Integer)

max = -10000

maxi = -10000

For i = 1 To 8

If m1(i) Mod 2 = 0 And m1(i) > max Then max = m1(i): k = i

If m1(i) Mod 2 <> 0 And m1(i) > maxi Then maxi = m1(i): Z = i

Next i

If max = -10000 Or maxi = -10000 Then Debug.Print "нетутребуемыхчисел" Else

d = m1(k): m1(k) = m1(Z): m1(Z) = d

Debug.Print " массив"

For i = 1 To 8

Debug.Print m1(i);

Next i: Debug.Print: Debug.Print

End Sub

18.В одномерном массиве из положительных и отрицательных чисел найти произведение максимального нечетного отрицательного числа и минимального положительного числа.

Sub zadacha18()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv18(m())

End Sub

Sub cv18(m1() As Integer)

max = 10000

maxi = -10000

For i = 1 To 8

If m1(i) > 0 And m1(i) < max Then max = m1(i)

If m1(i) Mod 2 <> 0 And m1(i) > maxi And m1(i) < 0 Then maxi = m1(i)

Next i

If max = -10000 Or maxi = -10000 Then Debug.Print "нетутребуемыхчисел" Else p = max * maxi: Debug.Print "Произведение "; p

End Sub

19.В одномерном массиве из положительных и отрицательных чисел найти сумму каждого второго отрицательного числа и каждого второго положительного числа.

Sub zadacha19()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv19(m())

End Sub

Sub cv19(m1() As Integer)

k = 0

y = 0

p = 0

h = 0

For i = 1 To 8

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

If m1(i) < 0 And k = 2 Then p = p + m1(i): k = 0

If m1(i) > 0 Then y = y + 1

If m1(i) > 0 And y = 2 Then h = h + m1(i): y = 0

Next i

Debug.Print "сумма отрицательных "; p, "сумма положительных"; h

End Sub

20.В одномерном массиве из положительных и отрицательных чисел найти сумму каждого второго четного числа и каждого второго нечетного числа.

Sub zadacha20()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv20(m())

End Sub

Sub cv20(m1() As Integer)

k = 0

y = 0

p = 0

h = 0

For i = 1 To 8

If m1(i) Mod 2 = 0 Then k = k + 1

If m1(i) Mod 2 = 0 And k = 2 Then p = p + m1(i): k = 0

If m1(i) Mod 2 <> 0 Then y = y + 1

If m1(i) Mod 2 <> 0 And y = 2 Then h = h + m1(i): y = 0

Next i

Debug.Print "суммачтных "; p, "сумманечетных "; h

End Sub

21. Найти произведение каждого второго четного отрицательного числа.

Sub zadacha21()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv21(m())

End Sub

Sub cv21(m1() As Integer)

k = 0

y = 0

p = 1

For i = 1 To 8

If m1(i) Mod 2 = 0 And m1(i) < 0 Then k = k + 1

If m1(i) Mod 2 = 0 And k = 2 Then p = p * m1(i): k = 0

Next i

Debug.Print "произведение "; p

End Sub

22.В одномерном массиве из положительных и отрицательных чисел найти произведение каждого второго нечетного положительного числа.

Sub zadacha22()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv22(m())

End Sub

Sub cv22(m1() As Integer)

k = 0

y = 0

p = 1

с = 0

For i = 1 To 8

If m1(i) Mod 2 <> 0 And m1(i) > 0 Then k = k + 1

If m1(i) Mod 2 <> 0 And k = 2 Then p = p * m1(i): k = 0: c = c + 1

Next i

If c = 0 Then Debug.Print "нетунужныхчисел" Else Debug.Print "произведение "; p

End Sub

23.В одномерном массиве из положительных и отрицательных чисел записать в обратную сторону все положительные числа.

Sub zadacha23()

Dim m(1 To 7) As Integer

Randomize Timer

For i = 1 To 7

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 7

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv23(m())

End Sub

Sub cv23(m1() As Integer)

k = 7

c = 1

For i = 1 To k

For j = k To i Step -1

If i <> j And i <> j - 1 And m1(i) > 0 And m1(j) > 0 Then k = j - 1: s = m1(i): m1(i) = m1(j): m1(j) = s: Exit For

Next j

Next i

Debug.Print "Новыймассив"

For i = 1 To 7

Debug.Print m1(i);

Next i: Debug.Print: Debug.Print

End Sub

24.В одномерном массиве из положительных и отрицательных чисел записать в обратную сторону все четные числа.

Sub zadacha24()

Dim m(1 To 7) As Integer

Randomize Timer

For i = 1 To 7

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 7

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv24(m())

End Sub

Sub cv24(m1() As Integer)

k = 7

c = 1

For i = 1 To k

For j = k To i Step -1

If i <> j And i <> j - 1 And m1(i) Mod 2 = 0 And m1(j) Mod 2 = 0 Then k = j - 1: s = m1(i): m1(i) = m1(j): m1(j) = s: Exit For

Next j

Next i

Debug.Print "Новыймассив"

For i = 1 To 7

Debug.Print m1(i);

Next i: Debug.Print: Debug.Print

End Sub

25.В одномерном массиве из положительных и отрицательных чисел найти произведение первого положительного числа и первого отрицательного числа.

Sub zadacha25()

Dim m(1 To 8) As Integer

Randomize Timer

For i = 1 To 8

m(i) = Int(Rnd() * 100) + 1 - 50

Next i

Debug.Print "Исходныймассив"

For i = 1 To 8

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call cv25(m())

End Sub

Sub cv25(m1() As Integer)

For i = 1 To 8

If m1(i) > 0 Then l = m1(i): Exit For

Next i

For i = 1 To 8

If m1(i) < 0 Then g = m1(i): Exit For

Next i

p = l * g

Debug.Print "произведение "; p

End Sub

Соседние файлы в папке Информатика