Пример выполнения лабораторной работы №2 по предмету "Высокоуровневые методы информатики и программирования"
Лабораторная работа №2
Тема: "Сложные типы данных. Массивы".
Задание: Вариант 5
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) максимальный элемент массива;
2) сумму элементов массива, расположенных до последнего положительного элемента.
3)Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, Ь]. Освободившиеся в конце массива элементы заполнить i
Словесный алгоритм программы:
1. Начало.
2. Ввод исходных данных: размер массива, интервал [a,b], символ-заменитель.
3. Начинаем цикл по I от 1 до конца массива.
4. Если i-й элемент массива меньше i+1-го, то максимальным считаем i+1-й.
5. Если достигнут конец массива, то вывод максимального элемента массива.
6. Иначе, переход к следующему элементу.
сумма элементов массива, расположенных до последнего положительного элемента.
7. Начинаем цикл по I от конца массива, до его первого элемента.
8. Если i>=0 то последний положительный элемент найден, запоминаем его номер и переход к 10.
9. Иначе переход к следующему элементу массива.
10. Считаем сумму элементов массива, с номерами от 1-го до найденного последнего положительного.
11. Вывод суммы.
Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, Ь]. Освободившиеся в конце массива элементы заполнить i
12. Начинаем цикл по I от 1 до конца массива.
13. Если модуль i-го элемента не входит в интервал [a.b], то заносим его в новый массив.(с таким же размером как и исходный).
14. Если не достигли конца массива, то переход к след. элементу массива.
15. Массив, содержащий только отобранные элементы, дополняем символами-заменителями.
16. Конец
Реализация:
Option Explicit
Private Sub Command1_Click()
Dim arraySL() As Variant
Dim arrayNEW() As Variant
Dim razmer As Long
Dim i As Double
Dim arrayMax As Double
Dim arrayMin As Double
Dim maxElementArraySL As Double
Dim poslPlusNumberArraySL As Long
Dim summaArraySL As Double
Dim otZ As Double
Dim doZ As Double
Dim zamena As Variant
Dim shetchikMassiva As Long
'заполняем массив cлучайным образом
ReDim arraySL(1 To razmer)
Randomize
For i = LBound(arraySL) To UBound(arraySL)
If Check1.Value = 1 Then
arraySL(i) = Int((arrayMax - arrayMin + 1) * Rnd + arrayMin)
List1.AddItem arraySL(i)
Else
arraySL(i) = (arrayMax - arrayMin + 1) * Rnd + arrayMin
List1.AddItem arraySL(i)
List1.ListIndex = List1.NewIndex
End If
Next i
'Находим максимальный элемент сгенерированного массива
maxElementArraySL = arraySL(1)
For i = LBound(arraySL) To UBound(arraySL)
If maxElementArraySL < arraySL(i) Then maxElementArraySL = arraySL(i)
Next i
Text2.Text = maxElementArraySL
'Находим сумму элементов массива, расположенных до последнего положительного элемента
For i = UBound(arraySL) To LBound(arraySL) Step -1
If arraySL(i) >= 0 Then
poslPlusNumberArraySL = i
Exit For
End If
Next i
For i = LBound(arraySL) To poslPlusNumberArraySL
summaArraySL = summaArraySL + arraySL(i)
Next i
Text3.Text = summaArraySL
'Сжимаем массив, удалив из него все элементы, модуль которых
'находится в интервале [а, Ь].
'Освободившиеся в конце массива элементы заполняем i
ReDim arrayNEW(1 To razmer)
shetchikMassiva = 1
For i = LBound(arraySL) To UBound(arraySL)
If arraySL(i) > otZ And arraySL(i) < doZ Then GoTo e
arrayNEW(shetchikMassiva) = arraySL(i)
List2.AddItem arrayNEW(shetchikMassiva)
shetchikMassiva = shetchikMassiva + 1
e: Next i
For i = shetchikMassiva To UBound(arrayNEW)
arrayNEW(i) = zamena
List2.AddItem arrayNEW(i)
Next i
End Sub