Программный элемент поиск / 15
.docxЗадание 1
Постановка задачи
Заменить t первых элементов вектора P размерности j таким образом, чтобы их значения уменьшились на величину элемента, имеющего максимальное значение.
Входные данные: t – количество заменяемых элементов, целая переменная; j – размерность вектора P, целая переменная; P – исходный вектор, массив вещественных переменных.
Выходные данные: P – пересчитанный вектор, массив вещественных переменных.
Математическая модель задачи
Разработка алгоритма
Разработка визуальной части проекта
Код приложения
Private Sub CommandButton1_Click()
Dim t As Integer, i As Integer, j As Integer, max As Single, P() As Single
t = InputBox("t=")
j = InputBox("Размерность P=")
ReDim P(1 To j)
Print "P(исх)=";
For i = 1 To j
P(i) = InputBox("P(" & i & ")=")
Print P(i),
Next
max = P(1)
i = 2
Do While i <= j
If P(i) > max Then
max = P(i)
End If
i = i + 1
Loop
i = 1
Do While i <= t
P(i) = P(i) - max
i = i + 1
Loop
Print "P(изм)=";
For i = 1 To j
Print P(i),
Next
End Sub
Отладка программы
Ручной расчёт: При P = {5; 6; 12; 11; -2} и t = 3 max = P3 = 12 P1 = 5 – 12 = -7 P2 = 6 – 12 = -6 P3 = 12 – 12 = 0
Задание 2
Постановка задачи
Заменить последние элементы матрицы D размерности m × n, значением индекса строки, в которой найден первый положительный элемент соответствующего столбца
Входные данные: m – количество строк матрицы D, целая переменная; n – количество столбцов матрицы D, целая переменная; D – исходная матрица, массив целых переменных.
Выходные данные: D – пересчитанная матрица, массив целых переменных.
Математическая модель задачи
Если Dij>0, то Dmj=i (до первого положительного i в каждом столбце) где 1≤i≤m с шагом 1; 1≤j≤n с шагом 1
Разработка алгоритма
Разработка визуальной части проекта
Код приложения
Private Sub Command1_Click()
Dim m As Integer, i As Integer, n As Integer, j As Integer, D() As Integer, F As Boolean
m = InputBox("Введите количество строк")
n = InputBox("Введите количество столбцов")
ReDim D(1 To m, 1 To n)
Print "D(исх)="
For i = 1 To m
For j = 1 To n
D(i, j) = InputBox("D(" & i & ", " & j & ")=")
Print D(i, j),
Next
Next
j = 1
Do While j <= n
F = False
i = 1
Do While i <= m
If D(i, j) > 0 Then
D(m, j) = i
F = True
Exit Do
End If
i = i + 1
Loop
If F = False Then
Print "В столбце " & j & " нет положительных эл."
End If
j = j + 1
Loop
Print "D(изм)="
For i = 1 To m
For j = 1 To n
Print D(i, j),
Next
Next
End Sub
Отладка программы
Ручной расчёт: Для матрицы